команда exec с аргументом, имеющим% и, - PullRequest
0 голосов
/ 16 мая 2019

Мне нужно выполнить следующую команду в Linux и получить вывод, используя golang.

/bin/ps o pid,%cpu,%mem -p 14806

Команда работает нормально и выдает следующий результат:

  PID %CPU %MEM
14806  0.8  6.0

, но она не работает черезкод Голанга

package main

import (
    "fmt"
    "log"
    "os/exec"
)

func main() {

    cmd := exec.Command("ps", "o pid,%cpu,%mem -p 14806")
    fmt.Printf("Path: %q, args[1]: %q\n", cmd.Path, cmd.Args[1])

    out, err := exec.Command("ps", "o pid,%cpu,%mem -p 14806").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("The date is %s\n", out)
}


выход

Path: "/bin/ps", args[1]: "o pid,%cpu,%mem -p 14806"
2019/05/16 07:23:17 exit status 1
exit status 1

1 Ответ

0 голосов
/ 16 мая 2019

Спасибо @ Volker

следующий код работает

package main

import (
    "fmt"
    "log"
    "os/exec"
)

func main() {

    cmd := exec.Command("ps", "--no-headers", "o", "pid,%cpu,%mem", "-p", "14806")
    fmt.Printf("Path: %q, args[1]: %q\n", cmd.Path, cmd.Args[1])

    out, err := exec.Command("ps", "--no-headers", "o", "pid,%cpu,%mem", "-p", "14806").Output()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%s\n", out)
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...