在Linux操作系统中,每次执行程序时,内核都会创建一个与该程序关联的进程。简单的说,进程就是Linux系统中一个程序的运行实例。
内核创建的进程称为“父进程”,从父进程派生或产生的进程称为“子进程”。父进程可能由多个子进程组成,每个子进程都具有唯一的PID(进程ID),但共享相同的PPID。
PID和PPID有什么区别?
加载到内存中并运行的程序称为进程,进程启动后将获得一个唯一编号,称为进程ID ( PID ),在系统中唯一标识它。可以随时使用其PID引用该进程。如果要终止一个进程,必须先知道它的PID。
除了PID之外,每个进程还被分配了一个父进程ID ( PPID ),显示的是哪个进程生成了它。因此,PPID指的是父进程PID,即父进程的进程ID号。
为了说明这一点,假设PID为4040的进程4启动了进程5。进程5将被分配一个唯一的PID,例如5570,但仍将被分配PPID 4040。
这里的父进程是进程4,子进程是5。子进程被分配了一个唯一的PID,但是PPID与父进程的PID相同(进程4)。需要注意的是,单个父进程可以启动多个子进程,每个子进程都有唯一的PID但都共享相同的PPID。
在Linux想穿它中查找父进程ID
在Linux系统上查找正在运行的进程PPID主要有两种方法,分别是:
- 通过pstree命令。
- 通过ps命令。
使用pstree命令查找Linux进程PPID
pstree命令是一种命令行工具,它以树状形式显示正在运行的进程,这使得在层次结构中显示进程成为一种方便的方式。与此同时,它还以树状层次结构显示父子关系。
通过-p
选项,pstree显示所有正在运行的父进程及其相应的子进程和各自的PID,命令如下:
$ pstree -p
从上图的输出中,可以看到父进程ID和子进程ID。
为了便于演示,本文将使用以下命令检查火狐浏览器的PPID以及整个进程层次结构:
$ pstree -p | grep 'firefox'
从输出中可以看出火狐浏览器的PPID为3457,其余为子进程的PID。
要仅显示火狐浏览器的PPID并跳过其余输出,可以通过-1
参数传递给head命令以显示第一行。
$ pstree -p | grep 'firefox' | head -1
使用ps命令查找Linux进程PPID
查找进程PPID的另一个选项是ps命令,这是一个广泛使用的命令,用于显示Linux系统上当前正在运行的进程。当与-ef
选项一起使用时,ps命令会列出所有正在运行的进程及其详细信息,如下图所示:
$ ps -ef
要缩小范围并显示特定进程的PPID,例如火狐浏览器,请传递-e
选项并将输出通过pipe传递给grep命令,如下所示:
$ ps -e | grep 'firefox'
可以从上面的输出中看到,火狐浏览器的PPID是3457。
总结
在本文中,小编简单介绍了如何找到在Linux系统上运行的进程PPID。当然,主要就是介绍使用pstree或ps命令进行查看,希望能够对大家有所帮助。在使用Linux服务器时,如果某个进程占用过多的CPU和内存资源,都可以通过 以上方法方强制结束/杀死该进程。