noo*_*rup 0 command-line process ps
通过使用ps aux | grep -i “name of your desired program”出现的 PID 列表,但我发现了比系统监视器中更多的 PID。
这怎么可能?
我没有-color =auto在系统监视器中找到 PID 。
当您运行 时ps ... | grep ...,ps和grep一起启动,并且 的输出异步ps馈送grep。因此,当ps扫描进程列表并打印输出时,该grep进程也处于活动状态,并且输出也ps包括该 grep进程。
现在,如果你做一个简单的grep foo,输出ps将包含grep foo,并且grep将匹配的是 foo:
$ ps aux | grep non-existent
muru 19042 0.0 0.0 10760 2224 pts/8 S+ 23:56 0:00 grep non-existent
Run Code Online (Sandbox Code Playgroud)
显然,没有名为non-existent.
相反的ps | grep,使用pgrep更清洁的匹配:
pgrep foo
Run Code Online (Sandbox Code Playgroud)
或者ps它本身,如果您知道命令的名称:
ps -C foo
Run Code Online (Sandbox Code Playgroud)
为什么grep --color...?因为 Ubuntugrep默认定义了一个别名:
$ alias grep
alias grep='grep --color=auto'
Run Code Online (Sandbox Code Playgroud)
这也是为什么您会看到以下愚蠢的技巧:
ps ... | grep foo | grep -v grep
ps ... | grep '[f]oo'
Run Code Online (Sandbox Code Playgroud)