進程是我們學習Linux中常常接觸的概念,他是程序被運行起來的一種表現形態。
了解進程的工作狀態,管理進程的工作狀態,可以讓我們更清楚的知道,系統正在做什么,整體的進度是怎么樣的。
想要了解進程的工作狀態,我們就需要借助一些常用的工具來查看,想要對進程進行管理,我們也需要工具來實現。下面我們一起來看一看常用的查看進程工具有哪些,這些工具是如何使用的,有什么特點等等。
常用的進程查看工具有以下幾種:
pstree ps pidof pkill pgrep top htop
首先要說的第一個就是pstree。
這個命令最常用的方法就是pstree,后面不跟任何參數。這是一個將系統中的所有進程,以進程樹形態顯示出來的工具,讓我們可以擁有一個全局的眼光,去查看系統的進程。
這就是pstree的顯示結果,相信通過以上這張圖,能讓我們對pstree的顯示方式有一個比較直觀的了解。我們可以很容易的了解到系統一共運行了哪些進程,各個進程分別 包含了哪些線程等等。
接下來介紹一下ps這個命令的使用。
這或許是我們使用頻率最高的查看進程的命令了。
需要注意的是,ps這個命令,工作方式有點類似“snapshot”,當我們每次執行一次ps的時候,ps命令就會將系統當前的進程的運行狀態做一個靜態“snapshot”,然后顯示給我們,這樣的結果就是,有可能我們每次執行ps的結果,都是不一樣的。
按我的理解,ps是將動態的系統的進程的狀態的某個時間點的狀態,靜態的顯示給我們。
來看看ps命令常跟的選項,以及各個選項分別是什么意思:
ps支持兩種風格的顯示方式,一種是BSD風格,一種是UNIX風格。
BSD風格的選項:
ps a 顯示所有與終端相關的進程
ps x 顯示所有與終端無關的進程
ps u 顯示進程所有者的相關信息
ps f 顯示進程的父進程
ps o options的意思,即有選擇性的顯示
其實這些選項都是組合著用的,最常見的組合方式有以下幾種:
ps aux
ps auxf
ps axo [pid,euid,ruid,tty,ppid,%cpu,%mem]
ps aux 顯示結果:
ps auxf
ps axo 定義要顯示的選項的顯示結果:
說完BSD風格,再來說說UNIX風格的顯示。
ps -e e既是extend的意思,擴展顯示
ps -f 顯示完整格式
ps -F 顯示更完整的格式
ps -H 即hierarchy,以層級結構的方式顯示
ps -U 顯示以指定的用戶運行的程序
其實這些選項也是組合著用的,最常用的莫過于
ps -eFH
關于ps的顯示結果,在其第一行的各項參數,我們有必要了解一下,這樣我們才能對進程做更深入的理解。
UID: 進程的發起者
PID:通過此前的用戶管理章節的學習,我們已經知道,計算機是靠數字來標識這些不同的進程的,進程編號存在的意義也是一樣的,人能記住進程名,但計算機可記不住,它只能記數字。
PPID: 這個多出來的P就是parent的意思。
C: 即CPU,運行在哪顆CPU核心上。
%CPU: 分配到的CPU的時間片百分比
%MEM: 實際占用的內存百分比
VSZ:虛擬內存集
RSS:常駐內存集
START:啟動時間
TIME:運行占據CPU的累計時長
COMAND: 由哪個命令運行起來
STAT:進程的運行狀態
常見的進程的運行狀態有:
R:RUNING
S:interruptable sleep 可中斷睡眠
D:uninterruptable sleep 不可中斷睡眠,(一般都是在等待IO結束發生)
T:STOP
Z:zombie 僵尸進程
+:前臺運行的進程
l :多線程進程
N:低優先級進程
< :高優先級進程
s:創建會話者,通常都為bash程序
pidof 命令的使用:
從字面的意思即可以看出,這是一個獲取進程的PID的命令。后邊跟的參數當然是進程名啦。
我們可以根據一個進程的名字,得知這個進程的PID是多少,并且這個程序并發運行了多少個進程。
如下圖可以看出sshd這個服務端程序發起了兩個進程,分別為5422和1824。
再來說說pgrep和pkill
之所以放在一起說,是因為這兩個命令的使用幾乎一樣。
語法格式都為:
pgrep [options] pattern
pkill [options] pattern
常見選項:
pgrep | pkill
-u uid 實際運行的用戶
-U uid 真實生效的用戶
-t terminal 顯示指定終端相關的進程
pgrep -l 顯示出進程名
pgrep -a 顯示完整格式的進程名
接下來要說的就是top命令了。top的顯示結果非常強大,信息非常豐富。
并且,之前說的pstree , ps , pidof ,pgrep ,pkill 都是靜態顯示,而top卻是動態顯示。
信息有夠豐富!
相信剛才對顯示的參數的介紹,大家也能觸類旁通的理解top顯示的參數分別是什么意思了。
我們挑兩個重要的來說一說。
load vaerage: 這個選項顯示的是過去1分鐘,五分鐘,十五分鐘系統的負載,是一個衡量系統負載是否正常的非常重要的參數。當然啦,uptime命令也能顯示類似的信息。
CPU(s)相關的參數的解析;
us:用戶空間程序占據的CPU百分比
sy: 內核空間程序占據的CPU百分比
ni: 調整NICE值占據的時間
id:空閑比例
wa:等待IO完成的時間
hi: 硬中斷,通常由磁盤這個硬件發起
si: 軟中斷,通過由軟件發起
st:被虛擬化技術偷走的時間
top工具的使用:
默認情況下,這個工具是按占據CPU的百分比排序的。
top -d 調整刷新間隔
top -n 顯示多當次后退出
當然啦,top雖然已經夠強大,但黑白看著未免單調,于是誕生了一個界面相對比較“華麗”的htop,參數與top大同小異。
可以看看htop的效果圖,要顯眼許多。
當然啦,無論工具界面如何,我們都無需太過在意,畢竟linux大多數情況下都是比較單調,強調實用的,能將任何一款工具用得熟練,獲得我們想要的信息,才是最重要的。
以上是常見的進程的查看工具的使用,希望對大家有些幫助。
原創文章,作者:old_radish,如若轉載,請注明出處:http://www.www58058.com/75090