如何在 Linux 中查找父進(jìn)程 PPID
內(nèi)核創(chuàng)建的進(jìn)程稱為“父進(jìn)程”。從父進(jìn)程派生或產(chǎn)生的進(jìn)程稱為“子進(jìn)程”。父進(jìn)程可能由多個(gè)子進(jìn)程組成,每個(gè)子進(jìn)程都具有唯一的PID(進(jìn)程 ID)但共享相同的 PPID。
在本指南中,我們探討了可用于查找 Linux 系統(tǒng)上的父進(jìn)程 ID (PPID) 或進(jìn)程的各種方法。
PID 和 PPID 有什么區(qū)別?
加載到內(nèi)存中并運(yùn)行的程序稱為進(jìn)程。一旦啟動(dòng),進(jìn)程將獲得一個(gè)唯一編號(hào),稱為進(jìn)程 ID ( PID ),在系統(tǒng)中唯一標(biāo)識(shí)它??梢噪S時(shí)使用其PID引用該進(jìn)程。例如,要終止一個(gè)進(jìn)程,您必須先知道它的PID。
除了PID之外,每個(gè)進(jìn)程還被分配了一個(gè)父進(jìn)程ID ( PPID ),顯示是哪個(gè)進(jìn)程生成了它。因此,PPID是進(jìn)程父進(jìn)程的PID。
為了說明這一點(diǎn),我們假設(shè)PID為5050的進(jìn)程5啟動(dòng)進(jìn)程6。進(jìn)程 6 將被分配一個(gè)唯一的PID,例如6670,但仍將被分配PPID 5050。
這里的父進(jìn)程是進(jìn)程5,子進(jìn)程是6。子進(jìn)程被分配了一個(gè)唯一的PID但PPID與父進(jìn)程的 PID 相同(進(jìn)程 5)
單個(gè)父進(jìn)程可以啟動(dòng)多個(gè)子進(jìn)程,每個(gè)子進(jìn)程都有唯一的 PID 但都共享相同的PPID。
在 Linux 中查找父進(jìn)程 ID (PPID)
在 Linux 系統(tǒng)上查找正在運(yùn)行的進(jìn)程的PPID有兩種主要方法:
- 使用 pstree 命令。
- 使用 ps 命令。
使用 pstree 命令查找 Linux 進(jìn)程 PPID
pstree命令是一種命令行工具,它以樹的形式顯示正在運(yùn)行的進(jìn)程,這使得在層次結(jié)構(gòu)中顯示進(jìn)程成為一種方便的方式。它以樹狀層次結(jié)構(gòu)顯示父子關(guān)系。
通過該 -p選項(xiàng),pstree顯示所有正在運(yùn)行的父進(jìn)程及其相應(yīng)的子進(jìn)程和各自的 PID。
在樹層次結(jié)構(gòu)中顯示 Linux 正在運(yùn)行的進(jìn)程
從輸出中,我們可以看到父進(jìn)程 ID 和子進(jìn)程 ID。
為了演示,我們將使用以下命令檢查 Mozilla Firefox 的 PPID 以及整個(gè)進(jìn)程層次結(jié)構(gòu):
查找 Linux 進(jìn)程的 PPID
從輸出中可以看出 Firefox 的PPID 為 21401,其余為子進(jìn)程的PID。
要僅顯示 Firefox 的PPID并跳過其余輸出,請(qǐng)將輸出通過管道傳遞給 head 命令以-1顯示第一行。
打印 Linux 進(jìn)程的 PPID
使用 ps 命令查找 Linux 進(jìn)程 PPID
查找進(jìn)程PPID的另一個(gè)選項(xiàng)是 ps 命令,這是一個(gè)廣泛使用的命令,用于顯示Linux 系統(tǒng)上當(dāng)前正在運(yùn)行的進(jìn)程。
當(dāng)與該-ef選項(xiàng)一起使用時(shí),ps 命令會(huì)列出所有正在運(yùn)行的進(jìn)程及其詳細(xì)信息,例如UID、PID、PPID等。
使用 PID 列出正在運(yùn)行的 Linux 進(jìn)程
要縮小范圍并顯示特定進(jìn)程的PPID,例如Firefox,請(qǐng)傳遞-e?選項(xiàng)并將輸出通過管道傳遞給 grep 命令,如圖所示:
查找 Linux 進(jìn)程 PID
再一次,從輸出中,您可以看到 Firefox 的 PPID 是 21401。
在本指南中,我們演示了如何在 Linux 系統(tǒng)上找到運(yùn)行的進(jìn)程的 PPID。您可以使用 pstree 命令或 ps 命令來達(dá)到相同的目標(biāo)。