進程監控命令(五)

一 ps命令

1 描述

  該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有殭屍、哪些進程佔用了過多的資源等等。ps命令最常用的還是用於監控後臺進程的工作情況,因爲後臺進程是不和屏幕鍵盤這些標準輸入/輸出設備進行通信的,所以如果需要檢測其情況,便可以使用ps命令了。
  ps是顯示瞬間進程的狀態,並不動態連續;如果想對進程進行實時監控應該用top命令。

2 主要參數

  常見參數:

參數 作業
a 列出終端相關的,如果想列出所有進程需要配合x
u 顯示面向用戶的格式
x 列出終端先關的,如果列出所有進程需要配合a
f 顯示進程樹,這個顯示效果跟pstree的效果差遠啦
k 根據指定指標去排序
–sort 根據指定指標去排序,%cpu以cpu佔用排序,-%cpu反序排
o 設置顯示的列
L 顯示支持的屬性列表
-C 指定命令,多個命令用,分割
-L 顯示線程
-u 指定有效用戶ID或名稱
-U 指定真正的用戶ID或名稱
-p 顯示指定pid進程
–pid 顯示屬於pid的子進程
–forest 樹型顯示

  最常用的有ps -efps aux。這兩個到底有什麼區別呢?兩者沒太大差別,討論這個問題,要追溯到Unix系統中的兩種風格,System V風格和BSD 風格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,兩者輸出略有不同。現在的大部分Linux系統都是可以同時使用這兩種方式的。這個命令比較特殊,支持了三種風格:

  • Unix選項:使用1個-
  • BSD選項:選項不使用-
  • GNU長選項:選項使用2個-

3 ps -ef

  ps -ef是用標準的格式顯示進程的、其格式如下:
在這裏插入圖片描述

名稱 內容
UID 用戶ID、但輸出的是用戶名
PID 進程的ID
PPID 父進程ID
C 進程佔用CPU的百分比
STIME 進程啓動到現在的時間
TTY 該進程在那個終端上運行,若與終端無關,則顯示? 若爲pts/0等,則表示由網絡連接主機進程。
CMD 命令的名稱和參數

4 ps aux

  ps aux用BSD的格式來顯示、其格式如下:
在這裏插入圖片描述

名稱 內容
USER 用戶名
PID 進程的ID
%CPU 進程佔用的CPU百分比
%MEM 佔用內存的百分比
VSZ 該進程使用的虛擬內存量(KB)
RSS 該進程佔用的固定內存量(KB)(駐留中頁的數量)
STAT 進程的狀態
START 該進程被觸發啓動時間
TIME 該進程實際使用CPU運行的時間

  其中STAT狀態位常見的狀態字符有:

名稱 內容
D 無法中斷的休眠狀態(通常 IO 的進程);
R 正在運行可中在隊列中可過行的;
S 處於休眠狀態;
T 停止或被追蹤;
W 進入內存交換 (從內核2.6開始無效);
X 死掉的進程 (基本很少見);
Z 殭屍進程;
< 優先級高的進程
N 優先級較低的進程
L 有些頁被鎖進內存;
s 進程的領導者(在它之下有子進程);
l 多線程,克隆線程(使用 CLONE_THREAD, 類似 NPTL pthreads);
+ 位於後臺的進程組

5 用例

  1. 查看所有進程的命令,進程id,cpu佔用,內存佔用信息 ,並按照cpu佔用排序:
ps axo cmd,pid,%cpu,%mem k %cpu
  1. 查看指定終端的進程:
ps -t pts/3
  1. 查看指定終端的進程:
ps -t pts/3

二 top命令

1 概述

  top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器。
在這裏插入圖片描述

2 功能說明

  第一行,任務隊列信息,同 uptime 命令的執行結果。

系統時間:19:27:01
運行時間:up 54 min
當前登錄用戶:1 user
負載均衡(uptime) load average: 0.02, 0.03, 0.00,average後面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。
load average數據是每隔5秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。

  第二行,Tasks — 任務(進程)

總進程:159 total, 運行:1 running, 休眠:157 sleeping, 停止: 1 stopped, 殭屍進程: 0 zombie

  第三行,cpu狀態信息

0.0%us【user space】— 用戶空間佔用CPU的百分比。
0.1%sy【sysctl】— 內核空間佔用CPU的百分比。
0.0%ni【】— 改變過優先級的進程佔用CPU的百分比。
99.9%id【idolt】— 空閒CPU百分比。
0.0%wa【wait】— IO等待佔用CPU的百分比。
0.0%hi【Hardware IRQ】— 硬中斷佔用CPU的百分比。
0.0%si【Software Interrupts】— 軟中斷佔用CPU的百分比。

  第四行,內存狀態。

1012288k total, 234464k used, 777824k free, 24084k buffers【緩存的內存量】

  第五行,swap交換分區信息。

614396k total, 0k used, 614396k free, 72356k cached【緩衝的交換區總量】

  備註:可用內存=free + buffer + cached,對於內存監控,在top裏我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,第四行中空閒內存總量(free)是內核還未納入其管控範圍的數量。納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重複利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用爲此擔心。
  第六行,空行。
  第七行以下:各進程(任務)的狀態監控。

名稱 含義
PID 進程id
USER 進程所有者
PR 進程優先級
NI nice值。負值表示高優先級,正值表示低優先級
VIRT virtual memory usage 虛擬內存,單位kb。VIRT=SWAP+RES
1、進程“需要的”虛擬內存大小,包括進程使用的庫、代碼、數據等
2、假如進程申請100m的內存,但實際只使用了10m,那麼它會增長100m,而不是實際的使用量
RES resident memory usage 常駐內存,單位kb。RES=CODE+DATA
1、進程當前使用的內存大小,但不包括swap out
2、包含其他進程的共享
3、如果申請100m的內存,實際使用10m,它只增長10m,與VIRT相反
4、關於庫佔用內存的情況,它只統計加載的庫文件所佔內存大小
SHR shared memory 共享內存,單位kb
1、除了自身進程的共享內存,也包括其他進程的共享內存
2、雖然進程只使用了幾個共享庫的函數,但它包含了整個共享庫的大小
3、計算某個進程所佔的物理內存大小公式:RES – SHR
4、swap out後,它將會降下來
S 進程狀態。D:不可中斷的睡眠狀態,R:運行,S:睡眠,T:跟蹤/停止,Z:殭屍進程
%CPU 上次更新到現在的CPU時間佔用百分比
%MEM 進程使用的物理內存百分比
TIME+ 進程使用的CPU時間總計,單位1/100秒
COMMAND 進程名稱(命令名/命令行)

3 其他使用技巧

  1. 多U多核CPU監控:在top基本視圖中,按鍵盤數字“1”,可監控每個邏輯CPU的狀況。
  2. 高亮顯示當前運行進程:敲擊鍵盤“b”(打開/關閉加亮效果),“top”進程被加亮了,可以通過敲擊“y”鍵關閉或打開運行態進程的加亮效果。
  3. 進程字段排序:默認進入top時,各進程是按照CPU的佔用量來排序的,敲擊鍵盤“x”(打開/關閉排序列的加亮效果)。
  4. 通過”shift + >”或”shift + <”可以向右或左改變排序列:按一次”shift + >”的效果圖,視圖現在已經按照%MEM來排序,再按一次按時間排。
  5. top交互命令。
命令 作用
h 顯示幫助畫面,給出一些簡短的命令總結說明
k 終止一個進程。
i 忽略閒置和僵死進程。這是一個開關式命令。
q 退出程序
r 重新安排一個進程的優先級別
S 切換到累計模式
s 改變兩次刷新之間的延遲時間(單位爲s)
f或者F 從當前顯示中添加或者刪除項目
o或者O 改變顯示項目的順序
l 關閉或開啓第一部分第一行 top 信息的表示
m 關閉或開啓第一部分第四行 Mem 和 第五行 Swap 信息的表示
t 關閉或開啓第一部分第二行 Tasks 和第三行 Cpus 信息的表示
c 切換顯示命令名稱和完整命令行
M 根據駐留內存大小進行排序
N 以 PID 的大小的順序排列表示進程列表
P 根據CPU使用百分比大小進行排序
T 根據時間/累計時間進行排序
W 將當前設置寫入~/.toprc文件中

4 常用顯示命令

  顯示完整命令:top -c
  設置信息更新次數:top -n 2【表示更新兩次後終止更新顯示】
  設置信息更新時間:top -d 3【表示更新週期爲3秒】
  1、實時性:ps命令是系統在過去執行的進程的靜態快照;top命令反應的是系統進程動態信息,默認3s更新一次,可以用ps -d指定屏幕刷新的延遲時間。2、交互性:允許用戶輸入控制命令,比如在top命令的模式下輸入n5,就顯示如圖的此時的5個最活躍的進程,top會持續運行直到用戶按下"q",退出top

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章