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