我需要在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
。
答案 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.
请注意,仅当processname2
是processname1
的直接子进程时才会有效。