如何在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)