Linux系统中进程的查看及控制
1.什么是進(jìn)程
程序放置在儲(chǔ)存媒體中如硬盤(pán),光盤(pán),軟盤(pán),磁帶等,為實(shí)體文件的形態(tài)存在
進(jìn)程:程序被觸發(fā)后執(zhí)行者的權(quán)限與屬性,程序的程序碼與所需數(shù)據(jù)等都會(huì)被載入內(nèi)存中,操作系統(tǒng)并給予這個(gè)內(nèi)存內(nèi)的單元一個(gè)識(shí)別碼(pid),進(jìn)程就是一個(gè)正在運(yùn)行的程序
2.進(jìn)程的狀態(tài)
R 正在運(yùn)行
S 正在睡眠狀態(tài),但可以被喚醒
D 不可被喚醒的睡眠狀態(tài),通常進(jìn)程可能在等待I/O的情況
T 停止?fàn)顟B(tài),可能是在工作控制(背景暫停)或除錯(cuò)狀態(tài)
Z 僵尸狀態(tài),程序已經(jīng)終止但無(wú)法被移至內(nèi)存外
3.查看進(jìn)程
(1)圖形方式查看
gnome-system-monitor
打開(kāi)后如下:
(2)進(jìn)程查看命令
ps 查看當(dāng)前環(huán)境的進(jìn)程
-A 表示所有進(jìn)程
x表示有字符設(shè)備的所有進(jìn)程,即有輸出界面的進(jìn)程
-a 當(dāng)前環(huán)境中的進(jìn)程,忽略環(huán)境本身
a 跟當(dāng)前環(huán)境(shell)相關(guān)的所有的進(jìn)程,包括背景,最全的
-u 顯示進(jìn)程的歸屬,進(jìn)程所有人
f 查看進(jìn)程的從屬關(guān)系,有窗口的進(jìn)程結(jié)束父進(jìn)程子進(jìn)程會(huì)自動(dòng)結(jié)束
###pstree查看系統(tǒng)的進(jìn)程樹(shù)
e 顯示進(jìn)程消耗的資源
l 較長(zhǎng),較詳細(xì)的將該pid的信息列出
<1>常用組合
ps aux 顯示系統(tǒng)中所有進(jìn)程并顯示進(jìn)程用戶
ps ef 顯示進(jìn)程詳細(xì)信息并顯示進(jìn)程父子關(guān)系
ps ax 顯示當(dāng)前系統(tǒng)中的所有進(jìn)程
pstree 顯示當(dāng)前系統(tǒng)的進(jìn)程樹(shù)
<2>顯示進(jìn)程指定信息
ps -o comm進(jìn)程名稱(chēng)
user進(jìn)程所有人
group進(jìn)程所有組
%cpu進(jìn)程cpu使用率
%mem進(jìn)程內(nèi)存使用率
pid 進(jìn)程id
nice 進(jìn)程優(yōu)先級(jí)(0 表示normal 普通,nice 優(yōu)先級(jí)越負(fù)越高)
注:以上參數(shù)可以混合使用,使用多個(gè)參數(shù)時(shí)用,隔開(kāi)
4.進(jìn)程排序倒序
+正序,可以不加+,默認(rèn)是正序
ps ax --sort=-%cpu cpu使用量倒序
(+)%cpu cpu使用量正序
-%mem 內(nèi)存使用量倒序
( +)%mem 內(nèi)存使用量正序
例:查看系統(tǒng)內(nèi)存占用量前五的進(jìn)程的pid
5.nice 優(yōu)先級(jí)
優(yōu)先級(jí)的范圍是-20~19
優(yōu)先級(jí)越負(fù)越高
優(yōu)先級(jí)的級(jí)別有以下幾種:
##0 表示normal 普通
<1>gedit & 表示后臺(tái)運(yùn)行這個(gè)進(jìn)程,否則會(huì)占用命令行
例: nice -n 5 gedit & 啟動(dòng)時(shí)設(shè)置進(jìn)程的優(yōu)先級(jí)為5,再查看進(jìn)程
<2>改變已經(jīng)啟動(dòng)的進(jìn)程的優(yōu)先級(jí)
renice -n 優(yōu)先級(jí)數(shù)字 pid
例:先后臺(tái)打開(kāi)一個(gè)進(jìn)程,重新設(shè)定優(yōu)先級(jí),設(shè)定后系統(tǒng)會(huì)提示這個(gè)進(jìn)程的原來(lái)的優(yōu)先級(jí)和現(xiàn)在的優(yōu)先級(jí)
6.ps ax -o comm,pid,stat 查看進(jìn)程的狀態(tài)信息
S 進(jìn)程狀態(tài) (后面有以下參數(shù))
l 進(jìn)程狀態(tài)內(nèi)存中有所定空間
N 優(yōu)先級(jí)低
< 優(yōu)先級(jí)高
‘+’ 前臺(tái)運(yùn)行
s 頂級(jí)進(jìn)程
R+ 表示正在運(yùn)行
鎖定空間 還沒(méi)保存時(shí)不被回收的內(nèi)存空間
在休眠狀態(tài)下內(nèi)存是共享的
7.環(huán)境中進(jìn)程的前后臺(tái)調(diào)用
& 讓進(jìn)程開(kāi)啟的時(shí)候被打入后臺(tái)
例:創(chuàng)建一個(gè)gedit進(jìn)程并把它打入后臺(tái),此時(shí)命令行是可以用的
例:<1>創(chuàng)建兩個(gè)進(jìn)程,并用jobs查看,后創(chuàng)建的進(jìn)程默認(rèn)級(jí)別較高
<2>bg調(diào)用進(jìn)程,沒(méi)有指定的情況下默認(rèn)調(diào)用前面是+的進(jìn)程,這時(shí)默認(rèn)級(jí)別不會(huì)發(fā)生改變
<3>bg 1 調(diào)用進(jìn)程[1] ,這個(gè)進(jìn)程的默認(rèn)級(jí)別會(huì)發(fā)生改變,再次jobs查看發(fā)現(xiàn)兩個(gè)進(jìn)程的默認(rèn)級(jí)別發(fā)生改變
<4>再創(chuàng)建一個(gè)進(jìn)程打入后臺(tái),jobs查看新創(chuàng)建的進(jìn)程默認(rèn)級(jí)別最高,原來(lái)級(jí)別低的進(jìn)程現(xiàn)在沒(méi)有了級(jí)別(之前的進(jìn)程默認(rèn)級(jí)別自動(dòng)減一級(jí))
<5>bg調(diào)用有默認(rèn)級(jí)別的兩個(gè)進(jìn)程時(shí)沒(méi)有級(jí)別的進(jìn)程不會(huì)受影響,直到bg調(diào)用沒(méi)有級(jí)別的進(jìn)程時(shí)三個(gè)進(jìn)程的默認(rèn)級(jí)別才會(huì)都發(fā)生改變
<6>bg 2調(diào)用之前沒(méi)有默認(rèn)級(jí)別的進(jìn)程,他的級(jí)別由沒(méi)有變成了+,jobs查看后其他兩個(gè)進(jìn)程的級(jí)別在原基礎(chǔ)上減一級(jí)
<7>fg 會(huì)調(diào)用默認(rèn)級(jí)別最高的進(jìn)程直接運(yùn)行,他后面也可以加數(shù)字指定其他后臺(tái)運(yùn)行的進(jìn)程
5.進(jìn)程信號(hào)
信號(hào)是一個(gè)標(biāo)識(shí)
kill -信號(hào) pid
1 進(jìn)程重新加載配置##在進(jìn)程不被關(guān)閉的情況下更改配置,熱更新
kill -2 pid 刪除進(jìn)程在內(nèi)存中的數(shù)據(jù)(如 字符設(shè)備,鎖定空間)
例:先后臺(tái)運(yùn)行一個(gè)進(jìn)程gedit,執(zhí)行ps ax |grep gedit 命令得到gedit進(jìn)程的信息
打開(kāi)另一個(gè)shell,執(zhí)行kill -2 3672 刪除該進(jìn)程的鎖定空間,并再次執(zhí)行ps ax |grep gedit 命令查看他的信息
3 = crtl+\ 刪除鼠標(biāo)在內(nèi)存中的數(shù)據(jù)(刪除之后當(dāng)前shell中的光標(biāo)會(huì)消失,直到再次移動(dòng)鼠標(biāo)又會(huì)出現(xiàn))
9 強(qiáng)行結(jié)束單個(gè)進(jìn)程 (不能被阻塞)
15 正常結(jié)束進(jìn)程 (可以被阻塞)
例:ps查看當(dāng)前環(huán)境下的進(jìn)程,kill -15 pid 結(jié)束當(dāng)前shell,執(zhí)行后該命令被阻塞
在另一個(gè)shell中執(zhí)行kill -9 pid 執(zhí)行后shell被關(guān)閉
執(zhí)行后結(jié)果如下:
18 運(yùn)行暫停的進(jìn)程
19 不能被阻塞
20 可以被阻塞(第三方軟件不會(huì)被阻塞)
例:
<1>注:該實(shí)驗(yàn)的gedit必須是在圖形界面中打開(kāi)的
<2>查看gedit進(jìn)程的pid
<3>在gedit中輸入內(nèi)容
<4>執(zhí)行 kill -20 4075 命令,執(zhí)行后點(diǎn)擊gedit,還可以繼續(xù)編輯
<5>執(zhí)行kill -19 pid命令,再次點(diǎn)擊是不可以編輯的
<6>執(zhí)行kill -18 pid 命令繼續(xù)運(yùn)行暫停的進(jìn)程,剛剛暫停時(shí)的操作會(huì)顯示到文件中(lala是剛剛暫停后輸入的內(nèi)容)
killall -信號(hào) 進(jìn)程名 可以管理所有名為##的進(jìn)程,方便管理
kill -信號(hào) 進(jìn)程id 管理準(zhǔn)確
pkill -u student -信號(hào) 對(duì)屬于student用戶的進(jìn)程作相應(yīng)的操作
pkill 按照一定的條件去操作
例:切換到student用戶下,創(chuàng)建一個(gè)vim進(jìn)程,在另一個(gè)shell中查看跟student有關(guān)的進(jìn)程
執(zhí)行pkill -u username -信號(hào)命令,如圖執(zhí)行后student創(chuàng)建的所有進(jìn)程被結(jié)束,再次查看沒(méi)有跟student有關(guān)的進(jìn)程
6.進(jìn)程的動(dòng)態(tài)監(jiān)控
top
1 顯示cpu每個(gè)核的負(fù)載
s 調(diào)整刷新頻率
c cpu負(fù)載排序
m 內(nèi)存使用量排序
h 查看幫助
u 查看指定用戶進(jìn)程
k 對(duì)指定進(jìn)程發(fā)起信號(hào)
q 退出
例:執(zhí)行top命令,出現(xiàn)以下界面
在當(dāng)前界面按s,改變刷新頻率
按1,顯示CPU每個(gè)核的負(fù)載
按h,查看幫助
按u 查看指定用戶的進(jìn)程
<1>在另一個(gè)shell中切換到student用戶創(chuàng)建一個(gè)進(jìn)程,在top下按u,輸入student
<2>執(zhí)行后如下
總結(jié)
以上是生活随笔為你收集整理的Linux系统中进程的查看及控制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 硬盘对拷后没法启动怎么办
- 下一篇: 少林寺、孔子网站被黑