Linux進(jìn)程管理--day21

  • 一、什么是進(jìn)程

開(kāi)發(fā)寫(xiě)的代碼叫程序,將程序運(yùn)行起來(lái)就叫做進(jìn)程。也就是說(shuō)當(dāng)我們運(yùn)行一個(gè)程序,那么我們將運(yùn)行的程序叫做進(jìn)程。
a.當(dāng)程序運(yùn)行為進(jìn)程后,系統(tǒng)會(huì)該進(jìn)程分配內(nèi)存以及進(jìn)程運(yùn)行的身份以及權(quán)限。
b、在進(jìn)程運(yùn)行的過(guò)程中,系統(tǒng)會(huì)用各種指標(biāo)來(lái)表示當(dāng)前的運(yùn)行狀態(tài)。

  • 二、程序和進(jìn)程的區(qū)別

程序是數(shù)據(jù)和指令的集合,是一個(gè)靜態(tài)的概念,如/etc/lib 。同時(shí)程序可以長(zhǎng)期存在系統(tǒng)中。
進(jìn)程是程序的運(yùn)行過(guò)程,是一個(gè)動(dòng)態(tài)的概念,它是有著生么周期概念的,也就是說(shuō)進(jìn)程會(huì)隨著程序的運(yùn)行結(jié)束隨之毀滅。

  • 三、進(jìn)程的生命周期

image.png
講解:

當(dāng)父進(jìn)程接收到任務(wù)調(diào)度時(shí),會(huì)通過(guò)fock派生子進(jìn)程來(lái)處理,那么子進(jìn)程會(huì)繼承父進(jìn)程屬性。
1.子進(jìn)程在處理任務(wù)代碼時(shí),父進(jìn)程會(huì)進(jìn)入等待狀態(tài)中...
2.子進(jìn)程在處理任務(wù)代碼后,會(huì)執(zhí)行退出,然后喚醒父進(jìn)程來(lái)回收子進(jìn)程的資源。
3.如果子進(jìn)程在處理任務(wù)過(guò)程中,父進(jìn)程退出了,子進(jìn)程沒(méi)有退出,那么這些子進(jìn)程就沒(méi)有父進(jìn)程來(lái)管理了,就變成僵尸進(jìn)程。
PS: 每個(gè)進(jìn)程都父進(jìn)程的PPID,子進(jìn)程則叫PID。

2.監(jiān)控進(jìn)程狀態(tài)

程序在運(yùn)行后,我們需要了解進(jìn)程的運(yùn)行狀態(tài)。查看進(jìn)程的狀態(tài)分為: 靜態(tài)和動(dòng)態(tài)兩種方式

1.使用ps命令查看當(dāng)前的進(jìn)程狀態(tài)(靜態(tài))
1)示例、ps -aux常用組合,查看進(jìn)程 用戶(hù)、PID、占用cpu百分比、占用內(nèi)存百分比、狀態(tài)、執(zhí)行的命令等

圖解
狀態(tài) 描述
USER 啟動(dòng)進(jìn)程的用戶(hù)
PID 進(jìn)程運(yùn)行的ID號(hào)
%CPU 進(jìn)程占用CPU百分比
%MEM 進(jìn)程占用內(nèi)存百分比
VSZ 進(jìn)程占用虛擬內(nèi)存大小 (單位KB)
RSS 進(jìn)程占用物理內(nèi)存實(shí)際大小 (單位KB)
TTY 進(jìn)程是由哪個(gè)終端運(yùn)行啟動(dòng)的tty1、pts/0等 ?表示內(nèi)核程序與終端無(wú)關(guān)
STAT 進(jìn)程運(yùn)行過(guò)程中的狀態(tài) man ps (/STATE)
START 進(jìn)程的啟動(dòng)時(shí)間
TIME 進(jìn)程占用 CPU 的總時(shí)間(為0表示還沒(méi)超過(guò)秒)
COMMAND 程序的運(yùn)行指令,[ 方括號(hào) ] 屬于內(nèi)核態(tài)的進(jìn)程。 沒(méi)有 [ ] 的是用戶(hù)態(tài)進(jìn)程。

2.STAT狀態(tài)的S、Ss、S、R、R+、S+等等,都是什么意思?

圖解

STAT基本狀態(tài) 描述 STAT狀態(tài)+符號(hào) 描述
R 進(jìn)程運(yùn)行 s 進(jìn)程是控制進(jìn)程, Ss進(jìn)程的領(lǐng)導(dǎo)者,父進(jìn)程
S 可中斷睡眠 < 進(jìn)程運(yùn)行在高優(yōu)先級(jí)上,S<優(yōu)先級(jí)較高的進(jìn)程
T 進(jìn)程被暫停 N 進(jìn)程運(yùn)行在低優(yōu)先級(jí)上,SN優(yōu)先級(jí)較低的進(jìn)程
D 不可中斷睡眠 + 當(dāng)前進(jìn)程運(yùn)行在前臺(tái),R+該表示進(jìn)程在前臺(tái)運(yùn)行
Z 僵尸進(jìn)程 l 進(jìn)程是多線程的,Sl表示進(jìn)程是以線程方式運(yùn)行

案例一、PS命令查看進(jìn)程狀態(tài)切換

#1.在終端1上運(yùn)行vim
[root@oldboy ~]# vim oldboy

#2.在終端2上運(yùn)行ps命令查看狀態(tài)
[root@oldboy ~]# ps aux|grep oldboy    S表示睡眠模式,+表示前臺(tái)運(yùn)行
root      58118  0.4  0.2 151788  5320 pts/1    S+   22:11   0:00 oldboy
root      58120  0.0  0.0 112720   996 pts/0    R+   22:12   0:00 grep --color=auto oldboy
#在終端1上掛起vim命令,按下:ctrl+z 

#3.回到終端2再次運(yùn)行ps命令查看狀態(tài)
[root@oldboy ~]# ps aux|grep oldboy    #T表示停止?fàn)顟B(tài)
root      58118  0.1  0.2 151788  5320 pts/1    T    22:11   0:00 vim oldboy
root      58125  0.0  0.0 112720   996 pts/0    R+   22:12   0:00 grep --color=auto oldboy

  • 案例二、PS命令查看不可中斷狀態(tài)進(jìn)程
#1.使用tar打包文件時(shí),可以通過(guò)終端不斷查看狀態(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      58467  5.5  0.2 127924  5456 pts/1    R+   22:22   0:04 tar -czf etc.tar.gz /etc/ 
[root@oldboy ~]# ps aux|grep tar|grep -v grep
root      58467  5.5  0.2 127088  4708 pts/1    S+   22:22   0:03 tar -czf etc.tar.gz /etc/ 
[root@oldboy ~]# ps aux|grep tar|grep -v grep
root      58467  5.6  0.2 127232  4708 pts/1    D+   22:22   0:03 tar -czf etc.tar.gz /etc/ 

平均負(fù)載初涉:

[root@oldboy ~]# w
 16:52:23 up 32 min,  1 user,  load average: 0.00, 0.01, 0.05
當(dāng)前系統(tǒng)時(shí)間 系統(tǒng)運(yùn)行總時(shí)長(zhǎng)  有多少個(gè)用戶(hù)運(yùn)行 一分鐘,5分鐘,15分鐘負(fù)載
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         16:21    7.00s  0.04s  0.00s w
  • 2.使用top命令查看當(dāng)前的進(jìn)程狀態(tài)(動(dòng)態(tài))
image.png
任務(wù) 含義
Tasks: 129 total 當(dāng)然進(jìn)程的總數(shù)
1 running 正在運(yùn)行的進(jìn)程數(shù)
128 sleeping 睡眠的進(jìn)程數(shù)
0 stopped 停止的進(jìn)程數(shù)
0 zombie 僵尸進(jìn)程數(shù)
%Cpu(s): 0.7 us 系統(tǒng)用戶(hù)進(jìn)程使用CPU百分比
0.7 sy 內(nèi)核中的進(jìn)程占用CPU百分比,通常內(nèi)核是于硬件進(jìn)行交互
98.7 id 空閑CPU的百分比
0.0 wa CPU等待IO完成的時(shí)間
0.0 hi 硬中斷,占的CPU百分比
0.0 si 軟中斷,占的CPU百分比
0.0 st 比如虛擬機(jī)占用物理CPU的時(shí)間
  • 三、如何理解中斷

Linux軟中斷與硬中斷小結(jié)
Linux 中的中斷處理程序分為上半部和下半部:
上半部對(duì)應(yīng)硬件中斷,用來(lái)快速處理中斷。
下半部對(duì)應(yīng)軟中斷,用來(lái)異步處理上半部未完成的工作。
Linux 中的軟中斷包括網(wǎng)絡(luò)收發(fā)、定時(shí)、調(diào)度、等各種類(lèi)型,可以通過(guò)查看 /proc/softirqs 來(lái)觀察軟中斷的運(yùn)行情況。

  • top 常見(jiàn)指令
字母 含義
h 查看幫出
1 數(shù)字1,顯示所有CPU核心的負(fù)載
z 以高亮顯示數(shù)據(jù)
b 高亮顯示處于R狀態(tài)的進(jìn)程
M 按內(nèi)存使用百分比排序輸出
P 按CPU使用百分比排序輸出
q 退出top
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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