以下代码起作用并输出10个进程的详细信息。
package main import ( "os/exec" ) func main() { print(top()) } func top() string { app := "/usr/bin/top" cmd := exec.Command(app, "-n 10", "-l 2") out, err := cmd.CombinedOutput() if err != nil { return err.Error() + " " + string(out) } value := string(out) return value }
但是,当我尝试使用附加参数“ -o cpu”进行相同操作时(例如,cmd:= exec.Command(app,“ -o cpu”,“ -n 10”,“ -l 2”))。我收到以下错误。
exit status 1 invalid argument -o: cpu /usr/bin/top usage: /usr/bin/top [-a | -d | -e | -c <mode>] [-F | -f] [-h] [-i <interval>] [-l <samples>] [-ncols <columns>] [-o <key>] [-O <secondaryKey>] [-R | -r] [-S] [-s <delay>] [-n <nprocs>] [-stats <key(s)>] [-pid <processid>] [-user <username>] [-U <username>] [-u]
但是我的控制台中的命令“ top -o cpu -n 10 -l 2”可以正常工作。我也在使用OS X 10.9.3。
分开论点。
top -o cpu -n 10 -l 2是 不是 你正在执行什么。您作为命令参数传递的内容等同于top "-o cpu" "-n 10" "-l 2"在shell中使用(如果尝试,它将为您提供完全相同的输出)。
top -o cpu -n 10 -l 2
top "-o cpu" "-n 10" "-l 2"
大多数命令都会严格将其解析为3个参数。由于POSIX参数不需要空格,因此top将分割-o为第一个选项,并将其余部分用作其参数。这主要是偶然地用于数字参数,但是for -o查找一个名为的字段" cpu",而没有。
top
-o
" cpu"
相反,使用
exec.Command(app, "-o", "cpu", "-n", "10", "-l", "2")