pgrep / pidof用于复杂进程名吗?


11

我试图使用pidof或pgrep能够将HUP发送到系统中的进程。问题是我只想使用精确的参数终止该进程。

这是“ ps awx”的输出

  657 ?        S      0:00 processname software
  658 ?        S      0:00 processname demo
  659 ?        S      0:00 processname test

通过执行以下操作之一:

pidof processname 
pgrep processname

您会从进程名开始获得所有进程的列表,但是我想做以下事情:

pidof processname test
pgrep processname test

仅检索我需要的PID(在本示例中为659)

更新

通过在pgrep上使用-f标志,可以做到:

pgrep -f "processname test"

您会得到正确的答案。


正确,通常需要,-f因为您要在完整的命令行上进行匹配。注意,pgrep对正则表达式进行运算,因此您也可以进行相对复杂的匹配。
cjc 2012年

Answers:


10
$ ps aux |grep [d]evio
user01   10220  0.0  0.1   5376  2424 pts/5    S+   11:41   0:00 ssh devio
$ pgrep -f "ssh devio"
10220
$ pkill -0 -f "ssh devio" ; echo $?
0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.