1. 程式人生 > >Linux程序之如何管理程序?如何動態地檢視程序的狀態?(top命令)

Linux程序之如何管理程序?如何動態地檢視程序的狀態?(top命令)

文章目錄


1. top命令的主要作用

Linux系統可以通過top命令可以動態地檢視系統的CPU、記憶體、執行時間、交換分割槽、執行的執行緒等資訊。通過top命令可以有效的發現系統的缺陷出在哪裡。是記憶體不夠,還是CPU處理能力不夠,亦或者是IO讀寫過高….

[[email protected]
]# top top - 21:31:26 up 15:16, 5 users, load average: 0.61, 0.82, 0.75 Tasks: 240 total, 2 running, 238 sleeping, 0 stopped, 0 zombie %Cpu(s): 13.7 us, 1.5 sy, 0.0 ni, 84.2 id, 0.6 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3775264 total, 250100 free, 2495300 used, 1029864 buff/cache KiB Swap: 4064252 total, 2789544 free, 1274708 used. 527664 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 16507 kiosk 20 0 1935284 201988 10816 R 46.8 5.4 68:11.92 plugin-con+ 15773 kiosk 20 0 1784208 497692 40776 S 4.7 13.2 37:05.32 firefox 408 root 20 0 36940 4116 3920 S 3.0 0.1 4:51.67 systemd-jo+ 3789 kiosk 20 0 747664 14124 4696 S 2.0 0.4 2:49.76 gnome-term+ 2404 root 20 0 439488 106688 84580 S 1.7 2.8 16:08.35 Xorg 2662 kiosk 9 -11 700096 5232 3032 S 1.7 0.1 5:17.25 pulseaudio 21632 kiosk 20 0 812940 167440 30100 S 1.7 4.4 20:15.48 wps 2688 kiosk 20 0 2111764 218776 18580 S 1.3 5.8 20:25.33 gnome-shell 663 root 20 0 399976 3352 2984 S 1.0 0.1 0:46.92 rsyslogd 7349 qemu 20 0 1697464 956932 556 S 0.7 25.3 5:03.80 qemu-kvm 7803 qemu 20 0 1697460 708164 544 S 0.7 18.8 4:16.74 qemu-kvm 18 root 20 0 0 0 0 S 0.3 0.0 0:16.94 rcuos/0 19 root 20 0 0 0 0 S 0.3 0.0 0:18.43 rcuos/1 21 root 20 0 0 0 0 S 0.3 0.0 0:19.62 rcuos/3 671 root 20 0 207984 160 120 S 0.3 0.0 0:01.60 abrt-watch+ 5676 root 20 0 0 0 0 S 0.3 0.0 0:00.28 kworker/u1+ 1 root 20 0 189128 2900 1432 S 0.0 0.1 0:06.11 systemd

2. top命令引數解讀

2.1 第一行

top - 21:31:26 up 15:16,  5 users,  load average: 0.61, 0.82, 0.75

這行資訊與命令uptime顯示的資訊相同。這些引數代表什麼含義呢?按順序一一對應:

系統當前時間 up 系統到目前為止i執行的時間, 當前登陸系統的使用者數量, load average後面的三個數字分別表示距離現在一分鐘,五分鐘,十五分鐘的負載情況。

注意:load average資料是每隔5秒鐘檢查一次活躍的程序數,然後按特定演算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了。

2.2 第二行

Tasks: 240 total,   2 running, 238 sleeping,   0 stopped,   0 zombie

按順序一一對應:

tasks表示任務(程序),240 total則表示現在有240個程序,其中處於執行中的有2個,238個在休眠(掛起),stopped狀態即停止的程序數為0,zombie狀態即殭屍的程序數為0個。

2.3 第三行

%Cpu(s): 13.7 us,  1.5 sy,  0.0 ni, 84.2 id,  0.6 wa,  0.0 hi,  0.0 si,  0.0 st

按順序一一對應:

us:user 使用者空間佔用cpu的百分比
sy:system 核心空間佔用cpu的百分比
ni:niced 改變過優先順序的程序佔用cpu的百分比
空閒cpu百分比
wa:IO wait IO等待佔用cpu的百分比
hi:Hardware IRQ 硬中斷 佔用cpu的百分比
si:software 軟中斷 佔用cpu的百分比
st:被hypervisor偷去的時間

2.4 第四行

KiB Mem :  3775264 total,   250100 free,  2495300 used,  1029864 buff/cache

按順序一一對應:

實體記憶體總量(3.7G),空閒記憶體總量(2.5G),使用中的記憶體總量(2.4G),緩衝記憶體量

第四行中使用中的記憶體總量(used)指的是現在系統核心控制的記憶體數,空閒記憶體總量(free)是核心還未納入其管控範圍的數量。納入核心管理的記憶體不見得都在使用中,還包括過去使用過的現在可以被重複利用的記憶體,核心並不把這些可被重新使用的記憶體交還到free中去,因此在linux上free記憶體會越來越少,但不用為此擔心 。

2.5 第五行

KiB Swap:  4064252 total,  2789544 free,  1274708 used.   527664 avail Mem

按順序一一對應:

交換區總量(4G),空閒交換區總量(2.7G),使用的交換區總量(1.2G),可用交換取總量

對於記憶體監控,在top裡我們要時刻監控第五行swap交換分割槽的used,如果這個數值在不斷的變化,說明核心在不斷進行記憶體和swap的資料交換,這是真正的記憶體不夠用了。

2.6 第六行為空,下面是第七行

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND 

按順序一一對應:

PID — 程序id
USER — 程序所有者
PR — 程序優先順序
NI — nice值。負值表示高優先順序,正值表示低優先順序
VIRT — 程序使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
RES — 程序使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
SHR — 共享記憶體大小,單位kb
S — 程序狀態。D=不可中斷的睡眠狀態 R=執行 S=睡眠 T=跟蹤/停止 Z=殭屍程序
%CPU — 上次更新到現在的CPU時間佔用百分比
%MEM — 程序使用的實體記憶體百分比
TIME+ — 程序使用的CPU時間總計,單位1/100秒
COMMAND — 程序名稱(命令名/命令列)