Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 为什么可以';你能找到这个过程吗?_Linux_Bash_Ps_Grep - Fatal编程技术网

Linux 为什么可以';你能找到这个过程吗?

Linux 为什么可以';你能找到这个过程吗?,linux,bash,ps,grep,Linux,Bash,Ps,Grep,如果我执行以下命令,这只是一个长命令,将永远等待 grep 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa abcd' 如果搜索长命令最后一段中包含的abcd,则pgrep-f找不到进程 ps auxww | grep abcd查找进程,但我无法在脚本中使用它,因为它还查找grep进程本身 如果只删除一个a,则pgrep-f abcd可以找到进程,但我有一个带有参数的很长的命令,因此我遇到了这个pg

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

grep 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa abcd'
如果搜索长命令最后一段中包含的
abcd
,则
pgrep-f
找不到进程

ps auxww | grep abcd
查找进程,但我无法在脚本中使用它,因为它还查找
grep
进程本身

如果只删除一个
a
,则
pgrep-f abcd
可以找到进程,但我有一个带有参数的很长的命令,因此我遇到了这个
pgrep
限制

问题


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

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

pgrep -f abcd
甚至:

ps uxww | grep '[a]bcd'
让我试试

$ 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

似乎对我有用。

当数据发送到
mbuffer
进程时,它将在数据流结束时退出。那么您如何知道进程仍在运行?您是否检查了
top
命令?顺便问一下,为什么对这个问题投反对票+1 long命令的目的是通过端口8023接收数据。在我的脚本中,我有这个长接收器命令和发送命令。即使发送命令退出,在接收命令退出之前仍可能需要一段时间,因此我要检查
abcd
。如果我找到它,那么我将等待一秒钟,再次检查,只有当我在流程列表中没有看到
abcd
时才继续。因此,即使是
top
也没有在列表中显示此流程?
pgrep
通常是您想要的解决方案。然而,有时更容易获得
ps auxww
格式的结果,而不仅仅是PID(由pgrep返回)。使用
ps auxww | grep[a]bcd
代替
ps auxww | grep abcd
。我以为我在使用
procps ng
,但我没有。这就是为什么它对我不起作用。我必须升级=)当第二个命令工作时,第一个命令不返回任何内容
ps--version
是procps ng 3.3.10中的
pgrep,请记住一个简单的测试不起作用。我的命令行参数是28699个字符。