为什么pgrep找不到这个过程?

时间:2014-12-29 04:53:32

标签: linux bash ps grep

如果我执行以下命令,这只是一个永远等待的长命令

grep 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa abcd'

如果我搜索包含在long命令的最后一段中的pgrep -f,则abcd无法找到该进程。

ps auxww|grep abcd找到了该过程,但我无法在脚本中使用它,因为它还会找到grep进程自我。

如果只删除一个a,那么pgrep -f abcd可以找到进程,但是我有很长的命令参数,所以我遇到了这个pgrep限制。

问题

根据唯一字符串abcd检查此类流程的正确方法是什么?

2 个答案:

答案 0 :(得分:5)

您可以通过以下任一命令找到编辑过的命令:

pgrep -f abcd

甚至:

ps uxww | grep '[a]bcd'

答案 1 :(得分:1)

让我试一试......

$ grep 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa abcd'

现在在另一个终端窗口中:

$ pgrep grep
1842

找到它,或者至少有一些grep进程:

$ ps -f $(pgrep grep)
  UID   PID  PPID   C STIME   TTY           TIME CMD
  501  1842  1836   0  8:59AM ttys004    0:00.00 grep aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa abcd
是的,这是找到的过程。

我们试试这个:

$ pgrep -f 'abcd'
1842

似乎适合我。