Linux進程相關(guān)

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

ps.png

作用:獲取系統(tǒng)某個時間點的進程運行情況。

2.1.1 ps -l

查看當(dāng)前用戶的bash進程

ps-l.png

相關(guān)字段說明

  • F :process flags 進程旗標(biāo),說明這個進程的總結(jié)權(quán)限,常見號碼有

  • 4:表示此進程的權(quán)限為 root;

  • 1:表示此子進程僅進行復(fù)制(fork)而沒有實際執(zhí)行(exec);

fork_exec.png
  • 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)所有運作的進程

psaux.png

相關(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;

top.png

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é)果寫入指定文件

top2.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容