ps - -o comm 和 -o 命令有什么区别?

Pet*_*ard 5 shell centos

在 CentOS 7.0.1406 上运行时我得到不同的输出

ps -A -o pid,command | grep [r]esque
Run Code Online (Sandbox Code Playgroud)

比我跑步时

ps -A -o pid,comm | grep [r]esque
Run Code Online (Sandbox Code Playgroud)

后者不返回任何内容;前者是我所期望的。我的印象commcommand. 有人可以解释一下区别吗?

Jua*_*cia 7

它们不是别名。Command 输出完整的命令,而 comm 只输出命令名称,因此输出可能不同。这完全取决于您要提取 grep 命令的内容。

一个例子:

$ ps -A -o pid,command | grep 9600
376 /sbin/agetty --keep-baud 115200 38400 9600 ttyS0 vt220
Run Code Online (Sandbox Code Playgroud)

并且以下输出为空:

ps -A -o pid,comm | grep 9600
Run Code Online (Sandbox Code Playgroud)

该字符串9600是完整命令的一部分,但它是命令名称。

command,cmdargs, with 的别名,以字符串形式打印命令及其所有参数。comm是一个不同的排序代码,它只打印可执行文件的名称。手册页片段:

   args      COMMAND command with all its arguments as a string.

   cmd       CMD    see args. (alias args, command).

   comm      COMMAND command name (only the executable name).

   command   COMMAND see args. (alias args, cmd).
Run Code Online (Sandbox Code Playgroud)