假设我想知道当前正在运行的 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
Run Code Online (Sandbox Code Playgroud)
第一行是我期望看到的。但第二个是什么?
Fré*_*yer 12
如果您输入ps aux|grep kate
,这将启动grep kate
,grep kate
将被视为grep kate
(或者如果您有一些别名(如本例所示),则更复杂)。并且grep kate
会选择对应的行,因为有子kate
串。
如果您想kate
在 grep 命令之前从进程列表中获取进程,pgrep
可以是您需要的命令。
编辑:甚至pgrep pgrep
没有发现自己。
小智 5
这是因为它为您正在搜索的进程和您刚刚输入的命令返回一行:grep kate
。
因此,如果您只想得到一个响应,请使用以下命令:
ps -fp $(pgrep -f '<your_search>')
Run Code Online (Sandbox Code Playgroud)
pgrep -f
根据进程的启动完整命令(包括参数)搜索进程的 PID。