假设我想知道当前正在运行的 kate 编辑器的 PID(kate 只是一个例子,它的工作原理与许多程序的描述一样)。所以,我执行ps aux | grep kate
.
这是输出:
seifert 35523 0.0 0.2 448724 25144 ? Sl 08:56 0:33 /bin/kate -b
seifert 1499179 0.0 0.0 12196 656 pts/0 S+ 21:52 0:00 grep --color=auto kate
第一行是我期望看到的。但是第二个是什么?
如果你键入
ps aux|grep kate
,这将启动grep kate
,grep kate
将被视为grep kate
(或者如果你有像本例中那样的别名,则更复杂的东西)。并且grep kate
会选择对应的行,因为有子kate
串。如果你想
kate
在 grep 命令之前从进程列表中获取进程,pgrep
可以是你需要的命令。编辑:甚至
pgrep pgrep
没有找到自己。如何防止“grep”出现在 ps 结果中?
如果您不希望看到最后一个 grep 命令,您可以
ps aux | grep 'kate'
在进程列表中像进程/命令一样调用您可以使用的命令[]
您可以在搜索的每个命令/进程中使用这个括号ps aux | grep '[c]ommand' or '[p]rocess'
您也可以使用,仅获取 pid
pidof kate
或者
pgrep kate
或者
ps -ef | grep [k]ate
那是因为它为您正在搜索的进程和您刚刚输入的命令返回一行:
grep kate
。因此,如果您只想得到一个响应,请使用此命令:
pgrep -f
根据启动完整命令(包括参数)搜索进程的 PID。