進程管理

1、什麼是進程?
進程是操作系統的一種抽象概念,用來表示正在運行的程序。linux是一種多用戶、多進程的操作系統。在linux的內核中,維護着一張表。這張表記錄了當前系統中運行的所有進程的各種信息。linux內核會自動完成對進程的控制和調度。當然,這是所有的操作系統都必須擁有的基本功能。
2、關於內核中一些重要的進程信息。
a:進程的內存地址。
b:進程的當前狀態。
c:進程正在使用的資源。
d:進程的優先級(謙讓度)。
e:進程的屬主。
3、進程的一些屬性:
(1)PID:進程的ID號。linux不僅自己使用PID來確定進程,還要求用戶在管理進程時也提供相應的PID號。且幾乎所有的進程管理工具都接收PID號,而不是進程名。
(2)PPID:父進程的PID。所有的進程都必須由另一個進程創建,除了在系統引導時,由內核自主創建並安裝的那幾個進程。但實質上,linux並沒有提供一種可以讓應用程序“創建”一個進程的系統調用。應用程序只能通過克隆自己來產生新進程。
(3)UID:進程創建者的用戶ID號。
(4)EUID:有效用戶的ID號。
(5)NI(謙讓度):高謙讓度低優先級,低謙讓度高優先級。謙讓度的值一般在-20~+19之間浮動。
4、進程的一些常用命令:
(1)ps aux:用於顯示當前系統上運行的所有進程的信息。這條命令不顯示用戶的PPID和NI。
(2)ps lax:用於顯示當前系統上運行的所有進程的信息。不顯示進程屬主的用戶名,提供PPID和NI顯示。
(3)top:用於即時跟蹤當前系統中進程的情況。顯示的信息佔滿一頁,且10s更新一次,使用CPU資源多的程序會排在前面。
(4)lsof:用於查找某個特定的文件正被哪些進程使用。提供包括PID在內的各種進程信息。用法:lsof 文件名。
(5)kill:向進程發送一個信號。這個信號是什麼需要用過選項指定。默認情況下爲軟件終止操作(-15、-TERM、—SEGTERM),即不加任何選項時。可以使用kill -l查看所有的信號及編號。
常用的kill命令選項有:
信號編號 信號名 描述 默認執行操作
0 EXIT 程序退出時受到該信號 終止
1 HUP 掛起 終止
2 INT 中斷 終止
3 QUIT 退出 終止
9 KILL 殺死 終止
11 SEGV 段錯誤 終止
15 TERM 軟件終止 終止
在默認情況下,kill命令向進程發送TERM信號,這個信號表示請求終止某項操作。
使用kill命令不一定可以終止一個進程,原因爲:kill命令實質是向進程發送一個信號,那麼,程序可以將這個信號“捕捉”,“封鎖”或者“忽略”這個信號。但有一個kill信號永遠不能被捕捉,就是KILL信號,KILL可以在內核級別殺死一個進程。例:sudo kill -KILL pid。如果這個信號還不能殺死它,重新啓動時解決問題的唯一方法。
(6)nice:nice命令可以在啓動程序時設置其謙讓度。nice命令通過接受一個-n參數增加程序的謙讓度值,注意,這裏nice命令將-n後面的數值加上默認的謙讓度值,作爲程序的謙讓度值,可以用不帶參數的nice選項查看默認的謙讓度值。
例如:nice #查看默認謙讓度值
0 #系統默認的謙讓度值爲0
nice -n 2 bc#設置bc以謙讓度增量2啓動,謙讓度爲2(0默認+2增量)
(7)renice:renice可以在進程運行時調整其謙讓度值。renice是調整“絕對”謙讓度值的。
例如:原先bc的謙讓度爲2,執行:
renice +12 -p 8567 #假設bc的PID爲8567 -p選項指定進程PID。
執行完後,bc的謙讓度值就爲12了。
5、PROC文件系統:
/proc目錄下存放着內核有關係統狀態的各種有意義的信息,系統運行時,內核會隨時向這個目錄寫入數據。ps和top命令就是從這個地方讀取數據的。事實上,這是操作系統向用戶提供的一條通往內核的通道,用戶可以通過向/proc目錄下的文件寫入數據來修改操作系統的參數。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章