在linux中,ppid指的是父程序的PID,即父程序的程序ID號。當一個程序被建立時,建立它的那個程序被稱作父程序,子程序用PPID指出誰是其父程序;可執行「ps -ef | grep 程序名」命令來檢視,輸出結果的第三列就是ppid值。
本教學操作環境:linux5.9.8系統、Dell G3電腦。
一個程序包含多個屬性引數,通過使用 ps 命令,我們可以檢視當前系統中有關程序的詳細資訊,例如:
[root@localhost ~]# ps -le F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIMECMD 4 S 0 1 0 0 80 0 - 718 - ? 00:00:02 init 1 S 0 2 0 0 80 0 - 0 - ? 00:00:00 kthreadd …省略部分輸出…
可以看到,每個程序都包含 F、S、UID、PID 等屬性,這些屬性引數決定了程序被處理的先後順序、能夠存取的資源等,對於系統管理員和程式設計師都非常重要。
下面本篇文章就來給大家介紹一下UID、PID、PPID等常用屬性引數。
UID(真實使用者ID)
UID 使用者身份證明(User Identification)的縮寫。UID使用者在註冊後,系統會自動的給你一個UID的數值。意思就是給這名使用者編個號。
只有程序的建立者和 root 使用者才有權利對該程序進行操作,因此記錄一個程序的建立者(也就是屬主)就顯得非常必要。程序的 UID 就是其建立者的使用者 ID 號,用於標識程序的屬主。
EUID(有效使用者ID)
除了UID外,Linux 還為程序儲存了一個「有效使用者 ID 號」,被稱作 EUID。這個特殊的 UID 號用來確定程序對某些資源和檔案的存取許可權。在絕大部分情況下,程序的 UID 和 EUID 是一樣的,除了著名的 setuid 程式。
那麼,什麼是 setuid 程式呢?前面講了 passwd 命令,這個命令允許使用者修改自己的登入口令。但讀者是否考慮過這個問題,密碼儲存在 /etc/shadow 檔案中,這個檔案對普通使用者是不可讀的,那麼使用者為什麼能夠通過修改 shadow 檔案來修改自己的口令呢?
這就是 setuid 的妙處了,通過使 passwd 在執行階段具有檔案所有者(也就是 root)的許可權,讓使用者臨時有了修改 shadow 檔案的能力(當然這種能力是受到限制的)。因此,passwd 就是一個典型的 setuid 程式,其 UID 是當前執行這個命令的使用者 ID,而 EUID 則是 root 使用者的 ID(也就是 0)。
PID(程序的 ID 號)
系統為每個使用者都分配了用於標識其身份的 ID 號(UID)。同樣地,程序也有這樣一個 ID 號,被稱作 PID(Process Identification)。
要知道,用 ID 確定程序的方法是非常有好處的,因為對於計算機而言,認識數位永遠比認識一串字元方便得多,Linux 沒有必要去理解那些對人類非常「有意義」的程序名。
不僅 Linux 自己使用 PID 來確定程序,還要求使用者在管理程序時,也提供相應的 PID 號。事實上,幾乎所有的程序管理工具接受的也都是 PID 號,而不是程序名。
PPID(父程序的 PID)
在 Linux 中,所有的程序都必須由另一個程序建立(除了在系統引導時,由核心自主建立並安裝的那幾個程序)。當一個程序被建立時,建立它的那個程序被稱作父程序,而這個程序則相應地被稱作子程序。
子程序使用 PPID 指出誰是其「父親」,很容易可以理解,PPID 指的就是其父程序的 PID。
注意,在以上的敘述中,多次用到了「建立」這個詞,這是出於表述和理解上的方便,事實上,在 Linux 中程序是不能被「憑空」建立的,換句話說,Linux 沒有提供一種系統呼叫讓應用程式「建立」一個程序,應用程式只能通過克隆自己來產生新程序。
說明:
PID和PPID都是非零的整數。
PID是唯一的,一個PID只標識一個程序。
一個程序建立的另一個新程序稱為子程序。相反地,建立子程序的程序稱為父程序。
對於一個普通的使用者程序,它的父程序就是執行它的哪個Shell,對於Linux而言,Shell就是bash。
Linux 檢視程序的PID和PPID的方法
範例:檢視nginx程序的PID編號,ps -ef | grep nginx
執行之後,即可返回程序的PID和PPID編號
命令使用擴充套件,強制結束某程序
範例,強制結束nginx程序
相關推薦:《Linux視訊教學》
以上就是linux ppid是什麼意思的詳細內容,更多請關注TW511.COM其它相關文章!