如何在Linux中查找父进程ID
时间:2020-01-09 10:39:13 来源:igfitidea点击:
说明
如何从命令行在Linux中查找父进程ID。
我们还将学习如何使用ps命令查找给定的父进程ID的子级。
我们还将介绍如何使用pstree命令输出完整的父流程树。
父流程ID环境变量
当前上下文的父进程ID作为环境变量公开。要查看该值,我们可以将其回显。
echo $PPID
例如,如果我们将SSH连接到Linux服务器,则$ PPID环境变量的值将是SSH进程的进程ID。
环境变量仅输出进程ID。要查看父进程是什么,我们可以将ps命令和$ PPID环境变量一起使用。
ps -e | grep $PPID
查找正在运行的进程的父进程ID
为了确定特定进程的父进程,我们使用ps命令。
ps -o ppid= -p 9801
输出仅包含父进程ID本身。使用ps命令的输出,我们可以确定进程的名称。
ps -e | grep 9801
2029 ? 00:00:14 apache2
列出父流程ID的子流程
使用父进程ID,我们可以使用pgrep命令来查找使用父进程的所有子进程。
pgrep -laP $PPID
对于典型的SSH父级,输出将列出以下过程
30797 -bash 30798 /usr/lib/openssh/sftp-server
显示过程树
另一个有用的工具是" pstree"命令。此命令将输出父进程ID的子进程树。例如,要显示当前父进程的子进程树,我们将运行以下命令。
pstree $PPID
sshd─┬─bash───pstree
└─sftp-server
从上面的示例中,我们可以看到sshd进程是我们当前的父进程ID(PPID),并且它具有两个子进程。子进程是bash和sftp-server。
我们还可以看到bash进程有自己的子进程,这就是我们刚刚执行的pstree命令。
pstree命令还可以输出树中每个进程的进程ID。要输出进程ID,请使用-p标志。这是Apache Web服务器的进程树的示例。
pstree -p 2029
apache2(2029)─┬─apache2(9790)
├─apache2(9791)
├─apache2(9792)
├─apache2(9793)
├─apache2(9794)
├─apache2(9795)
├─apache2(9796)
├─apache2(9797)
├─apache2(9798)
├─apache2(9799)
├─apache2(9800)
├─apache2(9801)
├─apache2(9802)
├─apache2(9803)
├─apache2(9804)
├─apache2(9805)
├─apache2(9806)
├─apache2(9807)
├─apache2(9808)
├─apache2(9809)
├─apache2(9836)
├─apache2(9944)
├─apache2(15517)
├─apache2(21980)
└─apache2(29107)

