ps,pstree,top,vmstat用來查看進程或系統負載。下面介紹常常使用的命令組合,或顯示內容解釋。nginx
程序,進程,線程的關係
緩存
程序:擁有某此功能(能被cpu運行的指令),能夠被cpu調用運行的文件,一般都放在外部存儲設備上。多線程
進程:程序文件被調用運行時,通常都在內存中或cpu正在執行的程序。ide
線程:把進程中的執行任務的指令分紅多個片,而每片能夠單獨作爲一個執行流運行和調用,而且每一個片能夠分配到不一樣的cpu核心上運行。能夠被單獨調用的片稱爲線程。線程是比進程更小的調度單位。比進程更輕量級。線各能夠共享進程的一些資源。工具
進程的狀態ui
運行態:running,正在運行的進程。編碼
睡眠態:sleeping,睡眠態是進程等待調入cpu運行的進程等待再次被調入cpu運行。分爲兩種。可中斷和不可中斷。url
可中斷睡眠:interruptable,在內核給定的CPU時間片中沒有完成計算任務,等待內核繼續分配CPU時間片再次運行的進程。spa
不可中斷睡眠:uninterruptable,正在等待外部數據,而外部數據尚未輸入完成,這時此進程沒法被喚省,直到數據輸入完成後才能夠被中斷。線程
中止太:stopped,不會再被內核調度和運行。通常須要用戶手動喚省。此進程一直佔用內存,但不佔用cpu。
僵死太:zombie,每一個進程都是由父進程建立和停止。父進程若是掛掉,子進程完成任務後沒法自動回收,這時爲僵死態。這種進程會佔用內存。產生殭屍進程是由有問題的程序倒至的。只有重啓系統才能夠釋放其打敗的內存空間。
開始介紹,順序分別是:ps-->pstree-->pgrep-->pidof-->top-->vmstat
ps 快照式顯示進程狀態。ps把進程分爲兩種,與終端相關和與終端無關的。 與終端相關的進程指的是,用戶登錄後啓動的進,與終端無關則是系統啓動時就已經啓動的守護進程。ps有兩種使用風格,BSD風格和SysV風格,BSD風格使用方法不能用在參數前面加「-」,SysV則須要「-」
bsd風格
a 這個選項用來顯示全部與終端相關的進程
x 此選項顯示與終端無關的進程
u 以用戶爲中心來顯示。
組合使用
示例:ps aux 以用戶爲中心顯示全部進程
USER:此進程以那個用戶身份運行
PID:進程的ID號
%CPU:佔用CPU的百分比
%MEN:佔用內存的百分比
VSZ:虛擬內存大小。指的是內核分配給此進程線性內存空間中,此進程所佔用的空間大小。
RSS:常駐內在集。進程在內核分配線性空間中存儲的數據實際都眏射在物理內存中的頁面中,這些頁面有些能夠被轉存到交換分區,有些不能夠被交換,不能夠被交換出去的頁面叫作常駐內存級。
TTY:與那個終端相關,?爲與終端無關。
STAT:進程運行狀態,用R,S,s,D,T,Z,+,l,N
R爲運行態
S爲可中斷睡眠
D爲不可中斷睡眠
T爲中止態
Z爲僵死態
s表示爲一堆進程的領導者,說明此進程生成了一些子進程,這個進程就會被標記爲s。
+表示此進程是一個前臺進程,這個進程會佔用命令提示符。
l表示此進程是一個多線程進程
N表示此進程爲低優先級進程
<表示此進程是一個高優先級進程
START:表示啓動的時間
TIME:表示運行時長
COMMAND:表示由那個程序啓動的進程,用方括號「[]"括起來的表示是一個內核線程。
自定義顯示信息-o 後面跟參數。
-o 指定額外的顯示信息
pid:進程id
psr:運行在那個cpu
command
pri:優先級
ni:nice值
示例:ps axo pid,psr,command,pri,ni
sysv風格
-e 顯示全部進程
-f 顯示完整格式
-F 顯示額外信息
-H 顯示進程的層次結構
組合使用
示例:ps -ef 經完整格式顯示全部進程
各段解釋
UID:以那個用戶身份運行
PID:進程ID
PPID:此進程父進程的PID
C:CPU累計運行時長
STIME:啓動時間
TTY:運行在那個終端
TIME:執行累計時長
CMD:由那個程序啓動的進程,用方括號「[]"括起來的表示是一個內核線程。
組合2
示例:ps -eFH 以層次結構顯示全部進程的額外信息。
UID:以那個用戶身份運行
PID:進程ID
PPID:此進程父進程的PID
C:CPU累計運行時長
SZ:進程使用的內存空間
RSS:常駐內在集。實際在內存中的頁面數。進程在內核分配線性空間中存儲的數據實際都眏射在物理內存中的頁面中,這些頁面有些能夠被轉存到交換分區,有些不能夠被交換,不能夠被交換出去的頁面叫作常駐內存級
PSR:進程那個CPU上運行
STIME:啓動時間
TTY:運行在那個終端
TIME:執行累計時長
CMD:由那個程序啓動的進程,用方括號「[]"括起來的表示是一個內核線程。
pstree 查看進程樹 ,每一個進程都有那些子進程,其父進程是誰。(若是顯示亂碼,須要修改字符編碼。)
pgrep 過濾顯示指定的進程
-U 後面指定uid或用戶名,只顯示這個用戶啓動的進程。
-G 僅顯示與指定組相關用戶啓動的進程
-t 僅顯示與某個終端相關的進程
-l 顯示進程的名字
如: pgrep -lu root 查看以root身份運行的進程
pidof 查看指定進程的相關進程號
示例:pidoff nginx
top 實時顯示進程信息,是交互式的工具。默認按佔用cpu的百分對進程排序。
top的內部命令
t 顯示或不顯示進程狀態和cpu使用率
l 顯示或不顯示系統負載信息
1 顯示cpu總體負載或每顆cpu的負載,數字1
m 顯示或不顯示交換內存和物理內存的相關信息
M 以使用的內存百分比排序
P 以CPU使用百分比排序
T 累積佔用CPU的時間排序
q 退出top
k 終止指定進程,輸入pid就能夠kill掉此進程。
s 修改刷新頻率,以秒爲單位。默認3秒
經常使用選項
-d 5 :指定刷新頻率爲5秒,不會太準
-b 批次的方式顯示top的刷新,通常打來top的時候排在較下面的進程沒法顯示,這個選項可讓top把全部的進程一批一批的顯示。
-n 5 :指定顯示幾個批次後退出top
下面是每一個監視項的解釋
l 顯示或不顯示系統負載信息
t 顯示或不顯示進程狀態和cpu使用率
進程相關
CPU相關,1 顯示cpu總體負載或每顆cpu的負載,數字1。以下
m 顯示或不顯示交換內存和物理內存的相關信息
進程相關介紹
vmstat 命令監控信息很全面
-s 顯示內存的統計數據。
後面跟一個數字參數來表示每幾秒刷新一次,跟二個參數第二個參數爲刷新幾回後退出
vmstat 1 表示每一秒刷新一次
vmstat 1 10 表示每一少刷新一次,刷新10次後退出。
vmstat監控內容介紹
進程隊例
r:運行隊例的長度
b:阻塞進程的隊例的長度,阻塞進程通常爲等待io完成。
內存信息
swad:從內存轉到交換分區的大小,(單位是kb)
free:內存的自由空間
buff:用於緩衝的空間,緩衝般用來加速寫操做。
cache:用於緩存的空間,緩存空間通常用來加速讀操做。
交換分區信息
si:從內存向交換分區寫數據的速率,單位爲kb/s.寫操做較大說明內存空間小。
so:從交換分區數據向內存寫入的速率,單位也是kb/s。
system
in:進程中斷的速率,單位kb/s
cs:進程間切換的速率,單位kb/s.
cpu
us:用戶空間應用程序使用率
sy:內核空間使用率
id:空閒率
wa:等待io進程使用率
st:虛擬程序佔用cpu
監控未完等續!!!!