Linux系統之如何管理進程?如何動態地查看進程的狀態?(top命令)

1. top命令的主要做用

Linux系統能夠經過top命令能夠動態地查看系統的CPU、內存、運行時間、交換分區、執行的線程等信息。經過top命令能夠有效的發現系統的缺陷出在哪裏。是內存不夠,仍是CPU處理能力不夠,亦或者是IO讀寫太高….linux

[root@ubuntu]# 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顯示的信息相同。這些參數表明什麼含義呢?按順序一一對應:ios

系統當前時間 up 系統到目前爲止i運行的時間, 當前登錄系統的用戶數量, load average後面的三個數字分別表示距離如今一分鐘,五分鐘,十五分鐘的負載狀況。算法

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

2.2 第二行

Tasks: 240 total,   2 running, 238 sleeping,   0 stopped,   0 zombie
複製代碼

按順序一一對應:ubuntu

tasks表示任務(進程),240 total則表示如今有240個進程,其中處於運行中的有2個,238個在休眠(掛起),stopped狀態即中止的進程數爲0,zombie狀態即殭屍的進程數爲0個。
spa

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
複製代碼

按順序一一對應:firefox

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),緩衝內存量code

第四行中使用中的內存總量(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 — 進程名稱(命令名/命令行)

相關文章
相關標籤/搜索