進(jìn)程是正在執(zhí)行的一個程序或命令,每一個進(jìn)程都是一個運(yùn)行的實體,都有自己的地址空間,并占用一定的系統(tǒng)資源。
進(jìn)程管理的作用
- 判斷服務(wù)器健康狀態(tài)
- 查看系統(tǒng)中所有進(jìn)程
- 殺死進(jìn)程
進(jìn)程的查看--ps和pstree命令
ps
# 查看系統(tǒng)中所有進(jìn)程,使用BSD操作系統(tǒng)格式
ps aux
選項:
a:顯示一個終端的所有進(jìn)程,除了會話引線
u:顯示進(jìn)程的歸屬用戶及內(nèi)存的使用情況
x:顯示沒有控制終端的進(jìn)程
# 查看系統(tǒng)中所有進(jìn)程,使用Linux標(biāo)準(zhǔn)命令格式
ps -le
選項:
-l:長格式顯示。顯示更加詳細(xì)的信息
-e:顯示所有進(jìn)程,和-a作用一致
ps命令的輸出
USER:該進(jìn)程是由哪個用戶產(chǎn)生的;
PID:進(jìn)程的ID號;
%CPU:該進(jìn)程占用CPU資源的百分比,占用越高,進(jìn)程越耗費資源;
%MEM:該進(jìn)程占用物理內(nèi)存的百分比,占用越高,進(jìn)程越耗費資源;
VSZ:該進(jìn)程占用虛擬內(nèi)存的大小,單位KB;
RSS:該進(jìn)程占用實際物理內(nèi)存的大小,單位KB;
TTY:該進(jìn)程是在哪個終端中運(yùn)行的。其中tty1-tty7代表本地控制臺終端,tty1-tty6是本地的字符界面終端,tty7是圖形終端。pts/0-255代表虛擬終端(現(xiàn)在不止256個)。?表示內(nèi)核啟動的
STAT:進(jìn)程狀態(tài)。常見的狀態(tài)有R運(yùn)行,S睡眠,T停止?fàn)顟B(tài),s包含子進(jìn)程,+位于后臺
START:該進(jìn)程的啟動時間
TIME:該進(jìn)程占用CPU的運(yùn)算時間,注意不是系統(tǒng)時間
COMMAND:產(chǎn)生此進(jìn)程的命令名
pstree
# 查看進(jìn)程樹
pstree [選項]
選項:
-p 顯示進(jìn)程的PID
-u 顯示進(jìn)程的所屬用戶
查看系統(tǒng)健康狀態(tài)--top命令
top [選項]
選項:
-d 秒數(shù):指定topminglmeige幾秒更新。默認(rèn)是3秒
-b 使用批處理模式輸出,一般和-n選項合用
-n 次數(shù):指定top命令執(zhí)行的次數(shù)。一般和-b選項合用
在top命令的交互模式當(dāng)中可以執(zhí)行的命令:
?或h 顯示交互模式的幫助
P 以CPU使用率排序,默認(rèn)就是此項
M 以內(nèi)存的使用率排序
N 以PID排序
q 退出top
顯示的前五行:
top - 13:51:04 up 4:26, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 360 total, 1 running, 359 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1001360 total, 578868 free, 210904 used, 211588 buff/cache
KiB Swap: 2098172 total, 2098172 free, 0 used. 615456 avail Mem
第一行信息為任務(wù)隊列信息
內(nèi)容 | 說明 |
---|---|
13:51:04 | 系統(tǒng)當(dāng)前時間 |
up 4:26 | 系統(tǒng)的運(yùn)行時間,本機(jī)一運(yùn)行4小時26分 |
1 user | 當(dāng)前登陸了一個用戶 |
load average:0.00,0.01,0.05 | 系統(tǒng)在之前1分鐘,5分鐘,15分鐘的平均負(fù)載。一般認(rèn)為小于1*核數(shù)(單核1雙核2四核4)時,負(fù)載較小。 |
第二行信息為進(jìn)程信息
內(nèi)容 | 說明 |
---|---|
Tasks: 360 total | 系統(tǒng)中的進(jìn)程總數(shù) |
1 running | 正在運(yùn)行的進(jìn)程樹 |
359 sleeping | 睡眠的進(jìn)程 |
0 stopped | 正在停止的進(jìn)程 |
0 zombie | 僵尸進(jìn)程。如果不是0,需要手工檢查僵尸進(jìn)程 |
第三行信息為CPU信息
內(nèi)容 | 說明 |
---|---|
0.2 us | 用戶模式占用的CPU百分比 |
0.2 sy | 系統(tǒng)模式占用的CPU百分比 |
0.0 ni | 改變過優(yōu)先級的用戶進(jìn)程占用的CPU百分比 |
99.7 id | 空閑CPU的CPU百分比 |
0.0 wa | 等待輸入/輸出的進(jìn)程的占用CPU百分比 |
0.0 hi | 硬終端請求服務(wù)占用的CPU百分比 |
0.0 si | 軟終端請求服務(wù)占用的CPU百分比 |
0.0 st | Steak time虛擬時間百分比。就是當(dāng)有虛擬機(jī)是,虛擬CPU等待實際CPU的時間輩分比。 |
第四行信息為內(nèi)存信息
內(nèi)容 | 說明 |
---|---|
1001360 total | 物理內(nèi)存的總量 |
578868 free | 空閑的物理內(nèi)存數(shù)量 |
210904 used | 已經(jīng)使用的物理內(nèi)存適量 |
211588 buff/cache | 作為緩沖緩存的內(nèi)存數(shù)量 |
第五行信息為交換分區(qū)swap信息
內(nèi)容 | 說明 |
---|---|
2098172 total | 交換分區(qū)的總大小 |
2098172 free | 空閑交換分區(qū)的大小 |
0 used | 已經(jīng)使用的交換分區(qū)的大小 |
補(bǔ)充緩沖buffer用來加速數(shù)據(jù)從硬盤中“讀取”,緩存cache用來數(shù)據(jù)“寫入”硬盤
# 使用top查看所有進(jìn)程
top -b -n 1 > /root/top/log
殺死進(jìn)程
kill
# 殺死進(jìn)程
kill [信號] 進(jìn)程號 (默認(rèn)信號為15)
# 平滑重啟進(jìn)程
kill -HUP 進(jìn)程號 (或者kill -1 進(jìn)程號) # 只能殺死重啟一個進(jìn)程
# 強(qiáng)制殺死進(jìn)程
kill -9 進(jìn)程號
# 查看可用的進(jìn)程信號
kill -l
列表如下:
kill -l
常用信號:
常用信號
killall
# 按照進(jìn)程名殺死進(jìn)程
killall [選項] [信號] 進(jìn)程名
選項:
-i 交互式,詢問是否要殺死某個進(jìn)程
-I 忽略進(jìn)程名的大小寫
pkill命令
# 按照進(jìn)程名殺死進(jìn)程
pkill [選項] [信號] 進(jìn)程名
選項:
-t 終端號 按照終端號踢出用戶
示例:
# 強(qiáng)制殺死從xxx終端登錄的進(jìn)程
pkill -9 -t tty1
pkill -9 -t pts/1
修改進(jìn)程優(yōu)先級
Linux操作系統(tǒng)是一個多用戶、多任務(wù)的操作系統(tǒng),Linux系統(tǒng)中同時運(yùn)行著非常多的進(jìn)程。但是CPU在同一個時鐘周期內(nèi)只能運(yùn)算一個指令。進(jìn)程優(yōu)先級決定了每個進(jìn)程處理的先后順序。
ps -le中的 PRI代表Priority,NI代表Nice。這兩個值都是優(yōu)先級,數(shù)字越小代表該進(jìn)程優(yōu)先級越高。用戶只能修改NI值,不能修改PRI值。
修改NI值時的注意事項:
- NI的值范圍是-20到19
- 普通喻戶調(diào)整NI值的范圍是0-19,而且只能調(diào)整自己的進(jìn)程
- 普通用戶只能調(diào)高NI值,而不能降低,如原本NI值為0,則只能調(diào)整為大于0
- root用戶才能設(shè)定進(jìn)程N(yùn)I值為負(fù)值,而且可以調(diào)整任何用戶的進(jìn)程。
- PRI(最終值)=PRI(原始值)+NI
- 用戶只能修改NI的值,不能直接修改PRI
nice
# nice命令可以給新執(zhí)行的命令直接賦予NI值,但是不能修改已經(jīng)存在的進(jìn)程的NI值
nice [選項] 命令
選項:
-n NI值,給命令賦予NI值
例:nice -n -5 service httpd start
renice
# 修改已經(jīng)存在進(jìn)程的NI值的命令
renice [優(yōu)先級] PID
例:renice -10 2125