日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

對話 UNIX,第 8 部分: UNIX 進程( 二 )


例如 , 如果您想查看您擁有的所有進程 , 鍵入 ps -w --user username :$ ps -w --user mstreicher您可以使用 ps -a -w -x 查看完整的進程列表 。(ps 命令的格式和特定的標志隨各個 UNIX 版本而有所差異 。請參閱系統(tǒng)的聯(lián)機文檔 , 以查找具體的說明 。) -a 是選擇 tty 設備上運行的所有進程;-x 則可進一步選擇與 tty 無關的所有進程 , 通常包括所有的永久系統(tǒng)服務 , 如 Apache HTTP server、cron 工作調度程序等等;-w 則以加寬的格式顯示內容 , 在查看命令行或與每個進程相關的應用程序完整路徑名時很有用 。
ps 具有豐富的功能 , 某些版本的 ps 甚至允許您自定義輸出 。例如 , 下面就是一個有用的自定義進程列表:
$ ps --user mstreicher -o pid,uname,command,state,stime,time
 PID USER COMMAND S STIME TIME
14138 mstreic sshd: mstreicher S 09:57 00:00:00
14139 mstreic -bashS 09:57 00:00:00
14937 mstreic ps --user mstrei R 10:23 00:00:00-o 根據各列名稱的順序對輸出進行格式化 。pid、uname 和 command 分別指進程 ID、用戶名和命令 。state 代表進程的狀態(tài) , 如正在睡眠 (S) 或運行 (R) 。(稍后將對進程狀態(tài)進行更詳細的說明 。)stime 顯示命令的開始時間 , time 則顯示該進程占用了多少 CPU 時間 。
進程從哪里來?
在 Unix 中 , 某些進程會從系統(tǒng)啟動到關機的時間里一直運行 , 但大多數進程都會隨任務的開始和完成而迅速地出現(xiàn)和消失 。有時 , 某個進程可能會“早夭“ , 甚至會“暴死(比如在系統(tǒng)崩潰時) 。新的進程是從哪里來的呢?
每個新的 UNIX 進程都是某個現(xiàn)有進程的產物 。另外 , 每個新進程(不妨將其稱為“子進程)是對“父進程的克隆體(至少有一瞬間是如此) , 直到“子進程繼續(xù)獨立執(zhí)行為止 。(如果每個進程都是某個現(xiàn)有進程的后代 , 那么不免會有一個疑問:“第一個進程是從哪里來的?請參閱下面的側欄以尋找答案 。)
雞和蛋 某些爭論是經久不息的:生存還是毀滅?可口可樂還是百事可樂?PC 還是 Mac?當然 , 還有一個古老的悖論 , “雞生蛋 , 還是蛋生雞?
【對話 UNIX,第 8 部分: UNIX 進程】如果每個新的 UNIX 進程都是某個現(xiàn)有的、正在運行的進程的后代 , 那么第一個進程是從哪里來的?答案是:UNIX 內核在系統(tǒng)啟動序列中產生了第一個進程 。
第一個進程被恰如其分地稱為 init , 所有其他系統(tǒng)進程的親緣關系最終都可以追溯到 init 。實際上 , init 的進程編號是 1 。如果您要查看 init 的狀態(tài) , 可鍵入 ps -l 1:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S010 0 680 -373 select ?0:02 init [2]正如您所看到的 , init 的所有者 (UID) 是 0 (root) 。和系統(tǒng)中所有其他進程不同的是 , init 沒有父進程 , 它的父進程 ID (PPID) 為 0 。圖 1-4 詳細說明了進程的產生過程:
在圖 2 和圖 3 中 , 進程 A (Process A) , 正在運行一個由藍色方框表示的程序 。它運行編號為 10 , 11 , 12…的指令 。進程 A 有屬于自己的數據、程序的副本、打開的文件集 , 以及自己的環(huán)境變量集 , 當進程 A 剛出現(xiàn)時 , 會對它們進行初次捕捉 。
圖 2. 進程 A 運行代碼
在 Unix 中 , fork() 系統(tǒng)調用(之所以有這個名稱 , 是因為它是一個調用或請求 , 要求操作系統(tǒng)進行協(xié)助)被用來產生新的進程 。當程序 A (Program A) 執(zhí)行指令 13 (Instruction 13) fork() 時 , 系統(tǒng)會立即創(chuàng)建進程 A 的一個精確克隆版本 , 并將其命名為進程 Z (Process Z) 。Z 具有和 A 相同的環(huán)境變量、相同的內存內容、相同的程序狀態(tài) , 打開的文件也一樣 。圖 3 顯示的是進程 A 生成進程 Z后 , 進程 A 和 Z 的狀態(tài) 。

推薦閱讀