Day 21-Linux進程管理之基本概念與監(jiān)控

一茬斧、進程的基本概念

1腰懂、什么是進程?

開發(fā)寫的代碼我們稱之為程序项秉,那么將開發(fā)的代碼運行起來绣溜,我們稱之為進程。
1)娄蔼、當(dāng)程序運行為進程后怖喻,系統(tǒng)就會為該進程分配內(nèi)存,以及進程運行的身份和權(quán)利岁诉。
2)罢防、在進程運行的過程中,系統(tǒng)會有各種指標(biāo)來表示當(dāng)前運行的狀態(tài)唉侄。

2咒吐、程序與進程之間有什么區(qū)別

1)、程序是數(shù)據(jù)和指令的集合,是一個靜態(tài)的概念恬叹,比如/bin/ls候生、/bin/cp等二進制文件。程序可以長期存在系統(tǒng)中绽昼。
2)唯鸭、進程是程序運行的過程,是一個動態(tài)的概念硅确。進程是存在于生命周期的概念目溉,也就是說進程會隨著程序的終止而銷毀,不會永久存在系統(tǒng)中菱农。

3缭付、進程的生命周期

生命周期就是指一個對象的生老病死。

生命周期示意圖

當(dāng)父進程接收到任務(wù)調(diào)度時循未,會通過fack派生子進程來處理陷猫,那么子進程會繼承父進程的屬性
1)、子進程在處理任務(wù)代碼時的妖,父進程會進入等待狀態(tài)中绣檬。
2)、子進程在處理任務(wù)代碼后會執(zhí)行退出嫂粟,然后喚醒父進程來回收子進程的資源娇未。
3)、如果子進程在處理任務(wù)的過程中星虹,父進程退出零抬,子進程沒有退出,那么子進程就沒有父進程的管理了搁凸,就會變成僵尸進程媚值。

PS:每一個進程有父進程的PPID狠毯,子進程的則叫PID护糖。

二、監(jiān)控進程狀態(tài)

程序在運行后嚼松,我們需要了解進程的運行狀態(tài)嫡良。查看進程的狀態(tài)分為靜態(tài)和動態(tài)兩種方式。

1献酗、使用 ps -aux 常用組合寝受,查看進程的用戶、PID罕偎、占用CPU百分比很澄、占用內(nèi)存百分比、狀態(tài)、執(zhí)行的命令等甩苛。

[root@oldboy ~]# ps -aux 
USER  PID  %CPU  %MEM  VSZ   RSS   TTY  STAT START  TIME  COMMAND
······
root   2    0.0   0.0   0     0     ?     S  14:42  0:0  [kthreadd]
······
狀態(tài) 描述
USER 啟動進程的用戶
PID 進程運行的ID號
%CPU 進程占用CPU的百分比
%MEM 進程占用內(nèi)存的百分比
VSZ 進程占用虛擬內(nèi)存大小(單位KB)
RSS 進程占用物理內(nèi)存書記大小(單位KB)
TTY 進程是由哪個終端運行啟動的tty1蹂楣、pts/0等,"?"表示內(nèi)核程序讯蒲,與終端無關(guān)
STAT 進程運行過程中的狀態(tài) man ps (/STATE)
ATART 進程的啟動時間
TIME 進程占用CPU的總時間(為0表示沒超過1秒)
COMMAND 程序的運行指令痊土,[ ]內(nèi)的屬于內(nèi)核的進程,沒有[]的是用戶態(tài)進程

2墨林、STAT狀態(tài)的描述

STAT基本狀態(tài) 描述 STAT狀態(tài)+符號 描述
R 進程進行 s 進程是控制進程赁酝,Ss進程的領(lǐng)導(dǎo),父進程
S 可中斷睡眠 < 進程運行在高優(yōu)先級上旭等,S<優(yōu)先級較高的進程
T 進程被暫停 N 進程運行在低優(yōu)先級上酌呆,SN優(yōu)先級較低的進程
D 不可中斷睡眠 + 當(dāng)前進程運行在前臺,R+表示該進程在前臺運行
Z 僵尸進程 I 進程是多棧的辆雾,SI表示進程是一線程方式運行的

3肪笋、案例

1)、可中斷進程

(1)度迂、在終端1上運行vim
[root@oldboy ~]# vim 1.txt 
1
2

(2)藤乙、在終端2上運行ps命令查看狀態(tài)
[root@oldboy ~]# ps aux |grep 1.txt 
root       7860  0.1  0.2 151532  5260 pts/0    S+   16:15   0:00 vim 1.txt  #S表示睡眠模式,+表示前臺運行
root       7888  0.0  0.0 112708   992 pts/1    R+   16:17   0:00 grep --color=auto 1.txt
 
(3)惭墓、在終端1上使用"ctrl+z"掛起vim命令
(4)坛梁、回到終端2再次運行ps命令查看狀態(tài)
[root@oldboy ~]# ps aux |grep 1.txt 
root       7860  0.0  0.2 151532  5260 pts/0    T    16:15   0:00 vim 1.txt #T表示停止?fàn)顟B(tài)
root       7890  0.0  0.0 112708   992 pts/1    R+   16:19   0:00 grep --color=auto 1.txt

2)、不可中斷進程

(1)腊凶、使用tar打包文件時划咐,可以通過終端不斷查看狀態(tài),由S+钧萍,R+變?yōu)镈+
[root@oldboy ~]# tar -czf etc.tar.gz /etc/ /usr/ /var/

[root@oldboy ~]# ps aux|grep tar|grep -v grep
root       7901  9.5  0.0 123812  1316 pts/0    S+   16:25   0:00 tar -czf etc.tar.gz /etc/ /usr/ /var/

[root@oldboy ~]# ps aux|grep tar|grep -v grep
root       7901  9.8  0.0 123812  1624 pts/0    R+   16:25   0:00 tar -czf etc.tar.gz /etc/ /usr/ /var/
······
[root@oldboy ~]# ps aux|grep tar|grep -v grep
root       7901 10.8  0.0 123812  1640 pts/0    S+   16:25   0:03 tar -czf etc.tar.gz /etc/ /usr/ /var/
[root@oldboy ~]# ps aux|grep tar|grep -v grep
root       7901 11.0  0.0 123812  1640 pts/0    R+   16:25   0:03 tar -czf etc.tar.gz /etc/ /usr/ /var/
[root@oldboy ~]# ps aux|grep tar|grep -v grep
root       7901 10.8  0.0 123812  1640 pts/0    D+   16:25   0:03 tar -czf etc.tar.gz /etc/ /usr/ /var/
[root@oldboy ~]# ps aux|grep tar|grep -v grep
root       7901 11.0  0.0 123812  1640 pts/0    S+   16:25   0:03 tar -czf etc.tar.gz /etc/ /usr/ /var/

4褐缠、使用top命令查看當(dāng)前的進程狀態(tài)(動態(tài))

1)、查看過程

top - 16:32:07 up  1:49,  2 users,  load average: 0.02, 0.14, 0.13
Tasks: 112 total,   1 running, 110 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2028088 total,  1557944 free,   145644 used,   324500 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.  1689076 avail Mem 

  PID  USER   PR  NI   VIRT     RES   SHR   S %CPU  %MEM   TIME+  COMMAND                                  
  7486 root   20   0  573824  17232   6084  S  0.7  0.8   0:07.77 tuned                                                           
  8025 root   20   0  162032   2192   1548  R  0.3  0.1   0:00.25 top                                                             
     1 root   20   0  193812   6872   4148  S  0.0  0.3   0:09.67 systemd                                                         
     2 root   20   0       0      0      0  S  0.0  0.0   0:00.03 kthreadd                                                        
     3 root   20   0       0      0      0  S  0.0  0.0   0:00.95 ksoftirqd/0   
任務(wù) 含義
Tasks: 112 total 當(dāng)然進程的總數(shù)
1 running 正在運行的進程數(shù)
110 sleeping 睡眠的進程數(shù)
1 stopped 停止的進程數(shù)
0 zombie 僵尸進程數(shù)
%Cpu(s): 0.0 us 系統(tǒng)用戶進程使用CPU百分比
0.3 sy 內(nèi)核中的進程占用CPU百分比风瘦,通常內(nèi)核是于硬件進行交互
0.0 ni 優(yōu)先級的進程占用CPU的百分比
99.7 id 空閑CPU的百分比
0.0 wa CPU等待IO完成的時間
0.0 hi 硬中斷队魏,占的CPU百分比
0.0 si 軟中斷,占的CPU百分比
0.0 st 虛擬機占用物理CPU的時間

2)万搔、top 常見指令

字母 含義
h 查看幫助
1 數(shù)字1胡桨,顯示所有CPU核心的負載
z 以高亮顯示數(shù)據(jù)
b 高亮顯示處于R狀態(tài)的進程
M 按內(nèi)存使用百分比排序輸出
P 按CPU使用百分比排揎輸出
q 退出top

三、中斷

1瞬雹、什么是中斷

中斷是系統(tǒng)用來響應(yīng)硬件設(shè)備請求的一種機制昧谊,它會打斷進程的正常調(diào)度和執(zhí)行,然后調(diào)用內(nèi)核中的中斷處理程序來響應(yīng)設(shè)備的請求酗捌。

2呢诬、為什么要有中斷呢? "舉個生活中的例子"

比如說你訂了一份外賣涌哲,但是不確定外賣什么時候送到,也沒有別的方法了解外賣的進度尚镰,但是膛虫,配送員送外賣是不等人的,到了你這兒沒人取的話钓猬,就直接走人了稍刀。所以你只能苦苦等著,時不時去門口看看外賣送到?jīng)]敞曹,而不能干其他事情账月。不過呢,如果在訂外賣的時候澳迫,你就跟配送員約定好局齿,讓他送到后給你打個電話,那你就不用苦苦等待了橄登,就可以去忙別的事情抓歼,直到電話一響,接電話拢锹、取外賣就可以了谣妻。 這里的“打電話”,其實就是一個中斷卒稳。沒接到電話的時候蹋半,你可以做其他的事情;只有接到了電話(也就是發(fā)生中斷)充坑,你才要進行另一個動作:取外賣减江。
這個例子你就可以發(fā)現(xiàn),中斷其實是一種異步的事件處理機制捻爷,可以提高系統(tǒng)的并發(fā)處理能力辈灼。

3、中斷會帶來什么問題也榄?

由于中斷處理程序會打斷其他進程的運行巡莹,所以,為了減少對正常進程運行調(diào)度的影響手蝎,中斷處理程序就需要盡可能快地運行榕莺。如果中斷本身要做的事情不多俐芯,那么處理起來也不會有太大問題棵介;但如果中斷要處理的事情很多,中斷服務(wù)程序就有可能要運行很長時間吧史。特別是邮辽,中斷處理程序在響應(yīng)中斷時,還會臨時關(guān)閉中斷。這就會導(dǎo)致上一次中斷處理完成之前吨述,其他中斷都不能響應(yīng)岩睁,也就是說中斷有可能會丟失。

4揣云、系統(tǒng)的中斷機制

事實上捕儒,為了解決中斷處理程序執(zhí)行過長和中斷丟失的問題,Linux 將中斷處理過程分成了兩個階段邓夕,也就是上半部和下半部:
上半部用來快速處理中斷刘莹,它在中斷禁止模式下運行,主要處理跟硬件緊密相關(guān)工作焚刚。
下半部用來延遲處理上半部未完成的工作点弯,通常以內(nèi)核線程的方式運行。
···············································································································
所以矿咕,這兩個階段你也可以這樣理解:
上半部直接處理硬件請求抢肛,也就是我們常說的硬中斷,特點是快速執(zhí)行碳柱;
而下半部則是由內(nèi)核觸發(fā)捡絮,也就是我們常說的軟中斷,特點是延遲執(zhí)行莲镣。

5锦援、Linux軟中斷與硬中斷小結(jié)

Linux 中的中斷處理程序分為上半部對應(yīng)硬件中斷,用來快速處理中斷剥悟。和下半部對應(yīng)軟中斷灵寺,用來異步處理上半部未完成的工作。Linux 中的軟中斷包括網(wǎng)絡(luò)收發(fā)区岗、定時略板、調(diào)度、等各種類型慈缔,可以通過查看/proc/softirqs 來觀察軟中斷的運行情況叮称。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市藐鹤,隨后出現(xiàn)的幾起案子瓤檐,更是在濱河造成了極大的恐慌,老刑警劉巖娱节,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挠蛉,死亡現(xiàn)場離奇詭異,居然都是意外死亡肄满,警方通過查閱死者的電腦和手機谴古,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門质涛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人掰担,你說我怎么就攤上這事汇陆。” “怎么了带饱?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵毡代,是天一觀的道長。 經(jīng)常有香客問我勺疼,道長月趟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任恢口,我火速辦了婚禮孝宗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘耕肩。我一直安慰自己因妇,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布猿诸。 她就那樣靜靜地躺著婚被,像睡著了一般。 火紅的嫁衣襯著肌膚如雪梳虽。 梳的紋絲不亂的頭發(fā)上址芯,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音窜觉,去河邊找鬼谷炸。 笑死,一個胖子當(dāng)著我的面吹牛禀挫,可吹牛的內(nèi)容都是我干的旬陡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼语婴,長吁一口氣:“原來是場噩夢啊……” “哼描孟!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起砰左,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤匿醒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缠导,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體廉羔,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年酬核,在試婚紗的時候發(fā)現(xiàn)自己被綠了蜜另。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡嫡意,死狀恐怖举瑰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔬螟,我是刑警寧澤菜皂,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布废麻,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浪秘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一腾供、第九天 我趴在偏房一處隱蔽的房頂上張望岖沛。 院中可真熱鬧,春花似錦廓握、人聲如沸搅窿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽男应。三九已至,卻和暖如春娱仔,著一層夾襖步出監(jiān)牢的瞬間沐飘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工牲迫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留耐朴,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓盹憎,卻偏偏與公主長得像隔箍,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脚乡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容