1.什么是進(jìn)程
比如: 開發(fā)寫的代碼我們稱為程序颈抚,那么將開發(fā)的代碼運(yùn)行起來。我們稱為進(jìn)程嚼鹉。
總結(jié)一句話就是: 當(dāng)我們運(yùn)行一個(gè)程序贩汉,那么我們將運(yùn)行的程序叫進(jìn)程驱富。
PS1: 當(dāng)程序運(yùn)行為進(jìn)程后,系統(tǒng)會(huì)為該進(jìn)程分配內(nèi)存匹舞,以及進(jìn)程運(yùn)行的身份和權(quán)限褐鸥。
PS2: 在進(jìn)程運(yùn)行的過程中,系統(tǒng)會(huì)有各種指標(biāo)來表示當(dāng)前運(yùn)行的狀態(tài)赐稽。
2.程序和進(jìn)程的區(qū)別
1.程序是數(shù)據(jù)和指令的集合叫榕,是一個(gè)靜態(tài)的概念。比如/bin/ls姊舵、/bin/cp等二進(jìn)制文件晰绎。同時(shí)程序可以長期存在系統(tǒng)中。
2.進(jìn)程是程序運(yùn)行的過程蠢莺,是一個(gè)動(dòng)態(tài)的概念。進(jìn)程是存在生命周期的概念的零如,也就是說進(jìn)程會(huì)隨著程序的終止而銷毀躏将,不會(huì)永久存在系統(tǒng)中。
3.進(jìn)程的生命周期
生命周期就是指一個(gè)對(duì)象的生老病死考蕾。用處很廣祸憋。
當(dāng)父進(jìn)程接收到任務(wù)調(diào)度時(shí),會(huì)通過fock派生子進(jìn)程來處理肖卧,那么子進(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)程來回收子進(jìn)程的資源拴魄。
3.如果子進(jìn)程在處理任務(wù)過程中,父進(jìn)程退出了紊浩,子進(jìn)程沒有退出蔫饰,那么這些子進(jìn)程就沒有父進(jìn)程來管理了,就變成僵尸進(jìn)程榔幸。
PS: 每個(gè)進(jìn)程都有父進(jìn)程允乐,父進(jìn)程的id叫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))
ps -aux
查看 進(jìn)程用戶拨齐、PID鳞陨、占用cpu百分比、占用內(nèi)存百分比瞻惋、終端炊邦、進(jìn)程狀態(tài)编矾、進(jìn)程啟動(dòng)時(shí)間、進(jìn)程占用cpu的總時(shí)間馁害、進(jìn)程名稱
狀態(tài) | 描述 |
---|---|
USER | 啟動(dòng)進(jìn)程的用戶 |
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)核程序與終端無關(guān) |
STAT | 進(jìn)程運(yùn)行過程中的狀態(tài) man ps (/STATE) |
START | 進(jìn)程的啟動(dòng)時(shí)間 |
TIME | 進(jìn)程占用 CPU 的總時(shí)間(為0表示還沒超過秒) |
COMMAND | 程序的運(yùn)行指令,[ 方括號(hào) ] 屬于內(nèi)核態(tài)的進(jìn)程碘菜。 沒有 [ ] 的是用戶態(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@xuliangwei ~]# vim oldboy
2.在終端2上運(yùn)行ps命令查看狀態(tài)
[root@xuliangwei ~]# 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@xuliangwei ~]# 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í)罢缸,可以通過終端不斷查看狀態(tài)篙贸,由S+,R+變?yōu)镈+
[root@xuliangwei ~]# tar -czf etc.tar.gz /etc/ /usr/ /var/
[root@xuliangwei ~]# 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@xuliangwei ~]# 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@xuliangwei ~]# 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/
2.使用top命令查看當(dāng)前的進(jìn)程狀態(tài)(動(dòng)態(tài))
任務(wù) | 含義 |
---|---|
Tasks: 109 total | 當(dāng)然進(jìn)程的總數(shù) |
1 running | 正在運(yùn)行的進(jìn)程數(shù) |
107 sleeping | 睡眠的進(jìn)程數(shù) |
1 stopped | 停止的進(jìn)程數(shù) |
0 zombie | 僵尸進(jìn)程數(shù) |
%Cpu(s): 0.0 us | 系統(tǒng)用戶進(jìn)程使用CPU百分比 |
0.2 sy | 內(nèi)核中的進(jìn)程占用CPU百分比枫疆,通常內(nèi)核是于硬件進(jìn)行交互 |
0.0 ni | 優(yōu)先級(jí)進(jìn)程占用cpu百分比 |
99.8 id | 空閑CPU的百分比 |
0.0 wa | CPU等待IO完成的時(shí)間 |
0.0 hi | 硬中斷歉秫,占的CPU百分比 |
0.0 si | 軟中斷,占的CPU百分比 |
0.0 st | 虛擬機(jī)偷取物理CPU的時(shí)間 |
top 常見指令
字母 | 含義 |
---|---|
h | 查看幫出 |
1 | 數(shù)字1养铸,顯示所有CPU核心的負(fù)載 |
z | 以高亮顯示數(shù)據(jù) |
b | 高亮顯示處于R狀態(tài)的進(jìn)程 |
M | 按內(nèi)存使用百分比排序輸出 |
P | 按CPU使用百分比排序輸出 |
q | 退出top |