1. 進(jìn)程管理事例情況
當(dāng)一個(gè)程序編寫得不完善,導(dǎo)致在內(nèi)存中產(chǎn)生一個(gè)有問(wèn)題的進(jìn)程時(shí)灾票,需要找到此進(jìn)程并移除(kill)
當(dāng)同時(shí)有多個(gè)任務(wù)在系統(tǒng)中運(yùn)行,需要其中最重要的一項(xiàng)優(yōu)先執(zhí)行(priority/nice)
當(dāng)系統(tǒng)比較忙碌,整個(gè)系統(tǒng)資源快要使用殆盡時(shí)患久,需要找出最耗資源的那個(gè)進(jìn)程,并移除浑槽,使得系統(tǒng)恢復(fù)正常
2.進(jìn)程的觀察
2.1 ps
作用:獲取系統(tǒng)某個(gè)時(shí)間點(diǎn)的進(jìn)程運(yùn)行情況蒋失。
2.1.1 ps -l
查看當(dāng)前用戶的bash進(jìn)程
相關(guān)字段說(shuō)明
F :process flags 進(jìn)程旗標(biāo),說(shuō)明這個(gè)進(jìn)程的總結(jié)權(quán)限桐玻,常見(jiàn)號(hào)碼有
4:表示此進(jìn)程的權(quán)限為 root篙挽;
1:表示此子進(jìn)程僅進(jìn)行復(fù)制(fork)而沒(méi)有實(shí)際執(zhí)行(exec);
-
S:代表這個(gè)進(jìn)程的狀態(tài) (STAT)镊靴,主要的狀態(tài)有:
- R(Running):該程序正在運(yùn)作中铣卡;
- S(Sleep):該程序目前正在睡眠狀態(tài)(idle),但可以被喚醒(signal)偏竟;
- D :不可被喚醒的睡眠狀態(tài)煮落,通常這支程序可能在等待 I/O 的情況(ex>打印)
- T :停止?fàn)顟B(tài)(stop),可能是在工作控制(背景暫停)或除錯(cuò) (traced) 狀態(tài)踊谋;
- Z (Zombie):僵尸狀態(tài)蝉仇,進(jìn)程已經(jīng)終止但卻無(wú)法被移除至內(nèi)存外。
UID/PID/PPID: 此進(jìn)程被該UID所擁有/進(jìn)程的PID碼/此進(jìn)程的父進(jìn)程 PID碼;
C:代表 CPU 使用率褪子,單位為百分比;
PRI/NI:Priority/Nice量淌,代表此進(jìn)程被 CPU 所執(zhí)行的優(yōu)先級(jí),數(shù)值越小代表該進(jìn)程越快被 CPU 執(zhí)行;
ADDR/SZ/WCHAN:都與內(nèi)存有關(guān)嫌褪,ADDR是kernel function呀枢,指出該進(jìn)程在內(nèi)存的哪個(gè)部分,如果是個(gè) running 的進(jìn)程笼痛,一般就會(huì)顯示『 - 』 / SZ 代表此進(jìn)程用掉多少內(nèi)存 / WCHAN 表示目前進(jìn)程是否運(yùn)作中裙秋,若為 - 表示正在運(yùn)作中;
TTY:登入者的終端機(jī)位置琅拌,若為遠(yuǎn)程登錄則使用動(dòng)態(tài)終端接口 (pts/n);
TIME:進(jìn)程實(shí)際花費(fèi) CPU 運(yùn)作的時(shí)間(不是系統(tǒng)時(shí)間);
CMD:command摘刑,造成此進(jìn)程的觸發(fā)程序指令;
2.1.2 ps aux
查看系統(tǒng)所有運(yùn)作的進(jìn)程
相關(guān)字段說(shuō)明
VSZ :該 process 使用掉的虛擬內(nèi)存量 (Kbytes)进宝;
RSS :該 process 占用的固定的內(nèi)存量 (Kbytes);
TTY :該 process 是在那個(gè)終端機(jī)上面運(yùn)作枷恕,若與終端機(jī)無(wú)關(guān)則顯示 党晋?;
另:ps aux 默認(rèn)以PID 升序顯示徐块。
2.2 top
持續(xù)獲取系統(tǒng)的進(jìn)程運(yùn)行情況未玻。
相關(guān)參數(shù)說(shuō)明
d :后面可以接秒數(shù),就是整個(gè)進(jìn)程畫面更新的秒數(shù)胡控。預(yù)設(shè)是 5 秒;
b :以批次的方式執(zhí)行top,通常會(huì)搭配數(shù)據(jù)流重導(dǎo)向來(lái)將批次的結(jié)果輸出成為文件;
n :與 -b 搭配扳剿,意義是,需要進(jìn)行幾次 top 的輸出結(jié)果;
p :指定觀察監(jiān)測(cè)某個(gè) PID;
2.2.1 top 內(nèi)容
第一部分:
Line_1:目前的時(shí)間昼激, 開(kāi)機(jī)到目前為止所經(jīng)過(guò)的時(shí)間庇绽,已經(jīng)登入系統(tǒng)的用戶人數(shù),系統(tǒng)在 1, 5, 15 分鐘的平均工作負(fù)載(越小代表系統(tǒng)越閑置橙困,若高于1瞧掺,則說(shuō)明系統(tǒng)進(jìn)程有些過(guò)繁復(fù));
Line_2:目前進(jìn)程的總量,在各個(gè)狀態(tài)(running, sleeping, stopped, zombie)的進(jìn)程數(shù)纷宇;
Line_3:cpu的整體負(fù)載情況夸盟,如果是多核心的設(shè)備,可以按下數(shù)字鍵『1』來(lái)切換成不同 CPU 的負(fù)載率像捶;
Line_4:物理內(nèi)存的使用情況;
Line_5:虛擬內(nèi)存的使用情況桩砰,如果 swap 被用的很大量拓春,表示系統(tǒng)的物理內(nèi)存實(shí)在不足;
Line_6:當(dāng)在 top 程序當(dāng)中輸入指令時(shí)亚隅,顯示狀態(tài)的地方硼莽;
第二部分為各個(gè)進(jìn)程的使用情況。
2.2.2 top執(zhí)行時(shí)的按鍵指令
? :顯示在 top 當(dāng)中可以輸入的按鍵指令煮纵;
P :以 CPU 的使用資源排序顯示懂鸵;
M :以 Memory 的使用資源排序顯示;
N :以 PID 來(lái)排序顯示行疏;
T :由該 Process 使用的 CPU 時(shí)間累積 (TIME+) 排序匆光;
k :給予某個(gè) PID 一個(gè)訊號(hào) (signal) ;
r :給予某個(gè) PID 重新制訂一個(gè) nice 值酿联;
q :離開(kāi) top 軟件的按鍵终息;