1,ps命令
ps命令是一個很強大的命令了,顯示查詢瞬間進程的狀態,參數眾多,僅列幾個常用的和具體參數的含義。
1)基本使用
ps -aux #顯示詳細的進程信息,進程所有者不限於當前用戶
查詢到的進程有關參數的含義:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 進程所有者 PID: 進程ID %CPU: 占用的 CPU 使用率 %MEM: 占用的內存使用率 VSZ: 占用的虛擬內存大小 RSS: 占用的內存大小 TTY: 終端的次要裝置號碼 (minor device number of tty) STAT: 進程狀態:
D 無法中斷的休眠狀態(通常 IO 的進程); R 正在運行,在可中斷隊列中; S 處於休眠狀態,靜止狀態; T 停止或被追蹤,暫停執行; W 進入內存交換(從內核2.6開始無效); X 死掉的進程; Z 僵屍進程不存在但暫時無法消除; W: 沒有足夠的記憶體分頁可分配 WCHAN 正在等待的進程資源; <: 高優先級進程 N: 低優先序進程 L: 有記憶體分頁分配並鎖在記憶體內 (即時系統或捱A I/O),即,有些頁被鎖進內存 s 進程的領導者(在它之下有子進程); l 多進程的(使用 CLONE_THREAD, 類似 NPTL pthreads); + 位於后台的進程組;
START: 啟動進程的時間; TIME: 進程消耗CPU的時間; COMMAND:命令的名稱和參數;
2)排序使用
ps -aux --sort=-vsz #ps命令自帶排序功能,本命令指的是按照vsz的大小降序排列
可排序的項目有:
c cmd 可執行地簡單名稱
C cmdline 完整命令行
f flags 長模式標志
g pgrp 進程地組ID
G tpgid 控制tty進程組ID
j cutime 累計用戶時間
J cstime 累計系統時間
k utime 用戶時間
K stime 系統時間
m min_flt 次要頁錯誤地數量
M maj_flt 重點頁錯誤地數量
n cmin_flt 累計次要頁錯誤
N cmaj_flt 累計重點頁錯誤
o session 對話ID
p pid 進程ID
P ppid 父進程ID
r rss 駐留大小
R resident 駐留頁
s size 內存大小(千字節)
S share 共享頁地數量
t tty tty次要設備號
T start_time 進程啟動地時間
U uid UID
u user 用戶名
v vsize 總地虛擬內存數量(字節)
y priority 內核調度優先級
3)用標准格式顯示進程的詳細信息(aux命令用的不是標准格式,是BSD格式)
ps -ef
顯示參數含義:
UID PID PPID C STIME TTY TIME CMD UID //用戶ID、但輸出的是用戶名 PID //進程的ID PPID //父進程ID C //進程占用CPU的百分比 STIME //進程啟動到現在的時間 TTY //該進程在那個終端上運行,若與終端無關,則顯示? 若為pts/0等,則表示由網絡連接主機進程。 CMD //命令的名稱和參數
4)查看父進程的子進程
pstree -p 1234 #1234指的是pid,能拿到子線程的線程數
top -H -p 1234 #-H按照線程查看 -p指定父進程的pid
cat /proc/1234/status #查看某個進程的具體信息,數據比較繁雜
5)根據ps打印出來的系統內容排序查看
查看cpu占用率前5的幾個進程
ps -aux | sort -k3,3nr | head -5 #sort中-t是指定的分隔符,默認空格,-k是指定分隔符后的字段順序,-n按照字符串的數值順序比較,-r reverse , -u uniq
查看內存前5的幾個進程
ps -aux | sort -k4,4nr | head -5
2,top命令
top 命令是 Linux 下常用的系統資源占用查看及性能分析工具,能夠實時顯示系統中各個進程的資源(比如cpu、內存的使用)占用狀況,top命令的執行結果是一個動態顯示過程。
用戶可以輸入的參數如下:
d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。 p 通過指定監控進程ID來僅僅監控某個進程的狀態。 q 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那么top將以盡可能高的優先級運行。 S 指定累計模式。 s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。 i 使top不顯示任何閑置或者僵死進程。 c 顯示整個命令行而不只是顯示命令名。 -n :與 -b 搭配,意義是,需要進行幾次 top 的輸出結果。 -p :指定某些個 PID 來進行觀察監測而已。
得到的參數含義:
列名 含義 PID 進程id PPID 父進程id RUSER Realusername UID 進程所有者的用戶id USER 進程所有者的用戶名 GROUP 進程所有者的組名 TTY 啟動進程的終端名。不是從終端啟動的進程則顯示為? PR 優先級 NInice 值。負值表示高優先級,正值表示低優先級 P 最后使用的CPU,僅在多CPU環境下有意義 %CPU 上次更新到現在的CPU時間占用百分比 TIME 進程使用的CPU時間總計,單位秒 TIME+ 進程使用的CPU時間總計,單位1/100秒 %MEM 進程使用的物理內存百分比 VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES SWAP 進程使用的虛擬內存中,被換出的大小,單位kb。 RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA CODE 可執行代碼占用的物理內存大小,單位kb DATA 可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb SHR 共享內存大小,單位kb nFLT 頁面錯誤次數 nDRT 最后一次寫入到現在,被修改過的頁面數。 S 進程狀態。 D= 不可中斷的睡眠狀態 R= 運行 S= 睡眠 T= 跟蹤/停止 Z= 僵屍進程 COMMAND 命令名/命令行 WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名