通过使用ps aux | grep -i “name of your desired program”
出现的 PID 列表,但我发现的 PID 比系统监视器中的多。
这怎么可能?
-color =auto
我在系统监视器中没有找到 PID 。
答案1
当您运行 时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
显然,没有名为 的进程non-existent
。
代替ps | grep
,用于pgrep
更清洁的匹配:
pgrep foo
或者ps
它本身,如果你知道命令的名称:
ps -C foo
为什么?因为 Ubuntu默认grep --color...
定义了一个别名:grep
$ alias grep
alias grep='grep --color=auto'
这也是为什么你会看到如下愚蠢的技巧:
ps ... | grep foo | grep -v grep
ps ... | grep '[f]oo'