我需要在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
。
最佳答案
重新表述您的伪代码问题:找到所有以 processname1
进程为父进程的 processname2
进程。这可以使用以下嵌套的 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
的直接子进程时才有效。
关于linux - bash 中类似 pgrep 的高级进程搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3420154/