在 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)
后者不返回任何内容;前者是我所期望的。我的印象comm是command. 有人可以解释一下区别吗?
它们不是别名。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,cmd是args, 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)