复杂进程名称的 pgrep/pidof 用法?

ase*_*ues 13 bash command-line-interface process

我正在尝试使用 pidof 或 pgrep 将 HUP 发送到我系统中的进程。问题是我只想用一个精确的参数来终止进程。

这是'ps awx'的输出

  657 ?        S      0:00 processname software
  658 ?        S      0:00 processname demo
  659 ?        S      0:00 processname test
Run Code Online (Sandbox Code Playgroud)

通过执行以下操作之一:

pidof processname 
pgrep processname
Run Code Online (Sandbox Code Playgroud)

您将获得以 processname 开头的所有进程的列表,但我想执行以下操作:

pidof processname test
pgrep processname test
Run Code Online (Sandbox Code Playgroud)

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

更新

通过在 pgrep 上使用 -f 标志可以完成我想要的操作:

pgrep -f "processname test"
Run Code Online (Sandbox Code Playgroud)

你会得到正确的答案。

jir*_*rib 11

$ 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
Run Code Online (Sandbox Code Playgroud)