top命令是Linux下常用的性能分析工具,能夠實時顯示Linux系統中各個進程的資源占用狀況,類似于Windows系統的任務管理器功能。
top命令的語法格式:
top [-] [d] [p] [q] [c] [C] [S] [s] ?[n]
常用參數說明
d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。
p 通過指定監控進程ID,僅僅監控某個進程的狀態。
q 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那么top將以盡可能高的優先級運行。
S 指定累計模式
s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
i 使top不顯示任何閑置或者僵死進程。
c 顯示整個命令行而不只是顯示命令名
比如執行top 命令輸出結果如下:
top - 07:50:17 up 99 days, 13:23, ?1 user, ?load average: 0.00, 0.01, 0.05
Tasks: ?71 total, ? 1 running, ?70 sleeping, ? 0 stopped, ? 0 zombie
%Cpu(s): ?0.0 us, ?6.2 sy, ?0.0 ni, 93.8 id, ?0.0 wa, ?0.0 hi, ?0.0 si, ?0.0 st
KiB Mem : ?1014908 total, ? ?77164 free, ? 210040 used, ? 727704 buff/cache
KiB Swap: ? ? ? ?0 total, ? ? ? ?0 free, ? ? ? ?0 used. ? 626352 avail Mem
PID USER ? ? ?PR ?NI ? ?VIRT ? ?RES ? ?SHR S %CPU %MEM ? ? TIME+ COMMAND
1 root ? ? ?20 ? 0 ? 51744 ? 3572 ? 2228 S ?0.0 ?0.4 ? 5:55.07 systemd
2 root ? ? ?20 ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ?0.0 ?0.0 ? 0:00.21 kthreadd
3 root ? ? ?20 ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ?0.0 ?0.0 ? 0:13.46 ksoftirqd/0
5 root ? ? ? 0 -20 ? ? ? 0 ? ? ?0 ? ? ?0 S ?0.0 ?0.0 ? 0:00.00 kworker/0:0H
7 root ? ? ?rt ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ?0.0 ?0.0 ? 0:00.00 migration/0
8 root ? ? ?20 ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ?0.0 ?0.0 ? 0:00.00 rcu_bh
9 root ? ? ?20 ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ?0.0 ?0.0 ? 6:54.45 rcu_sched
10 root ? ? ? 0 -20 ? ? ? 0 ? ? ?0 ? ? ?0 S ?0.0 ?0.0 ? 0:00.00 lru-add-drain
11 root ? ? ?rt ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ?0.0 ?0.0 ? 0:42.28 watchdog/0
top命令動態進程每列的含義
PID:進程ID
USER:進程擁有者
PR:進程優先級
NI:nice值,負值表示優先級高,正值表示優先級低
VIRT:進程使用的虛擬內存總量,單位是KB,VIRT=SWAP+RES
RES:進程使用的未被換出的物理內存大小,單位KB,RES=CODE+DATA
SHR:共享內存大小,單位KB
%CPU:上次更新到現在的CPU時間占用百分比
%MEM:進程使用的物理內存百分比
TIME+:進程使用的CPU時間總計,單位為1/100秒
COMMAND:進程名稱(命令名/命令行)
top常用的命令示例
top ??
#每隔5秒顯式所有進程的資源占用情況
top -d 2 ?
#每隔2秒顯式所有進程的資源占用情況
top -c ?
#每隔5秒顯式進程的資源占用情況,并顯示進程的命令行參數(默認只有進程名)
top -p 12345 -p 6789?
#每隔5秒顯示pid是12345和pid是6789的兩個進程的資源占用情況
top -d 2 -c -p 123456?
#每隔2秒顯示pid是12345的進程的資源使用情況,并顯式該進程啟動的命令行參數