1. 進程管理事例情況
當(dāng)一個程序編寫得不完善,導(dǎo)致在內(nèi)存中產(chǎn)生一個有問題的進程時,需要找到此進程并移除(kill)
當(dāng)同時有多個任務(wù)在系統(tǒng)中運行,需要其中最重要的一項優(yōu)先執(zhí)行(priority/nice)
當(dāng)系統(tǒng)比較忙碌,整個系統(tǒng)資源快要使用殆盡時,需要找出最耗資源的那個進程,并移除,使得系統(tǒng)恢復(fù)正常
2.進程的觀察
2.1 ps

作用:獲取系統(tǒng)某個時間點的進程運行情況。
2.1.1 ps -l
查看當(dāng)前用戶的bash進程

相關(guān)字段說明
F :process flags 進程旗標(biāo),說明這個進程的總結(jié)權(quán)限,常見號碼有
4:表示此進程的權(quán)限為 root;
1:表示此子進程僅進行復(fù)制(fork)而沒有實際執(zhí)行(exec);

-
S:代表這個進程的狀態(tài) (STAT),主要的狀態(tài)有:
- R(Running):該程序正在運作中;
- S(Sleep):該程序目前正在睡眠狀態(tài)(idle),但可以被喚醒(signal);
- D :不可被喚醒的睡眠狀態(tài),通常這支程序可能在等待 I/O 的情況(ex>打印)
- T :停止?fàn)顟B(tài)(stop),可能是在工作控制(背景暫停)或除錯 (traced) 狀態(tài);
- Z (Zombie):僵尸狀態(tài),進程已經(jīng)終止但卻無法被移除至內(nèi)存外。
UID/PID/PPID: 此進程被該UID所擁有/進程的PID碼/此進程的父進程 PID碼;
C:代表 CPU 使用率,單位為百分比;
PRI/NI:Priority/Nice,代表此進程被 CPU 所執(zhí)行的優(yōu)先級,數(shù)值越小代表該進程越快被 CPU 執(zhí)行;
ADDR/SZ/WCHAN:都與內(nèi)存有關(guān),ADDR是kernel function,指出該進程在內(nèi)存的哪個部分,如果是個 running 的進程,一般就會顯示『 - 』 / SZ 代表此進程用掉多少內(nèi)存 / WCHAN 表示目前進程是否運作中,若為 - 表示正在運作中;
TTY:登入者的終端機位置,若為遠程登錄則使用動態(tài)終端接口 (pts/n);
TIME:進程實際花費 CPU 運作的時間(不是系統(tǒng)時間);
CMD:command,造成此進程的觸發(fā)程序指令;
2.1.2 ps aux
查看系統(tǒng)所有運作的進程

相關(guān)字段說明
VSZ :該 process 使用掉的虛擬內(nèi)存量 (Kbytes);
RSS :該 process 占用的固定的內(nèi)存量 (Kbytes);
TTY :該 process 是在那個終端機上面運作,若與終端機無關(guān)則顯示 ?;
另:ps aux 默認(rèn)以PID 升序顯示。
2.2 top
持續(xù)獲取系統(tǒng)的進程運行情況。
相關(guān)參數(shù)說明
d :后面可以接秒數(shù),就是整個進程畫面更新的秒數(shù)。預(yù)設(shè)是 5 秒;
b :以批次的方式執(zhí)行top,通常會搭配數(shù)據(jù)流重導(dǎo)向來將批次的結(jié)果輸出成為文件;
n :與 -b 搭配,意義是,需要進行幾次 top 的輸出結(jié)果;
p :指定觀察監(jiān)測某個 PID;

2.2.1 top 內(nèi)容
第一部分:
Line_1:目前的時間, 開機到目前為止所經(jīng)過的時間,已經(jīng)登入系統(tǒng)的用戶人數(shù),系統(tǒng)在 1, 5, 15 分鐘的平均工作負載(越小代表系統(tǒng)越閑置,若高于1,則說明系統(tǒng)進程有些過繁復(fù));
Line_2:目前進程的總量,在各個狀態(tài)(running, sleeping, stopped, zombie)的進程數(shù);
Line_3:cpu的整體負載情況,如果是多核心的設(shè)備,可以按下數(shù)字鍵『1』來切換成不同 CPU 的負載率;
Line_4:物理內(nèi)存的使用情況;
Line_5:虛擬內(nèi)存的使用情況,如果 swap 被用的很大量,表示系統(tǒng)的物理內(nèi)存實在不足;
Line_6:當(dāng)在 top 程序當(dāng)中輸入指令時,顯示狀態(tài)的地方;
第二部分為各個進程的使用情況。
2.2.2 top執(zhí)行時的按鍵指令
? :顯示在 top 當(dāng)中可以輸入的按鍵指令;
P :以 CPU 的使用資源排序顯示;
M :以 Memory 的使用資源排序顯示;
N :以 PID 來排序顯示;
T :由該 Process 使用的 CPU 時間累積 (TIME+) 排序;
k :給予某個 PID 一個訊號 (signal) ;
r :給予某個 PID 重新制訂一個 nice 值;
q :離開 top 軟件的按鍵;
2.2.3 將某時段top觀察到的結(jié)果寫入指定文件
