在bash中进行类似pgrep的高级进程搜索

时间:2010-08-06 00:20:54

标签: linux bash

我需要在linux上的bash中找到某个java进程的pid。

如果只有一个java进程,

PID=$(pgrep java)

作品。

对于多个java进程,它变得更加复杂。手动,我运行 pstree ,找到我首先需要的java进程的祖先,然后找到有问题的java进程。是否可以在bash中执行此操作?基本上我需要伪代码中的功能:

Having `processname1` and `processname2`
and knowing that `processname2` is in the subtree of 'processname1',
find the pid of `processname2`.

在此示例中,java进程将为processname2

1 个答案:

答案 0 :(得分:2)

重新制定您的伪代码问题:查找所有processname2进程作为父进程processname1进程。这可以使用以下嵌套pgrep调用直接表示:

pgrep -P $(pgrep -d, processname1) processname2

这是直接来自pgrep(1)联机帮助页的那些标记的文档:

  -d delimiter
         Sets the string used to delimit each process ID in the output
         (by default a newline).

  -P ppid,...
         Only match processes whose parent process ID is listed.

请注意,仅当processname2processname1的直接子进程时才会有效。

相关问题