系統管理監看程序工具 iotop 指令

通常在伺服器系統管理時,我們常常需要去了解目前的系統cup、記憶體、網路流量狀態,在linux裡面有幾個工具是可以來監控使用的,如top、iftop、iotop等。(請參考linux 利用nohup來檢測目前備份的情況)


 iotop 啟動後的顯示畫面和 top 指令幾乎是一模一樣的,最大的差別是在畫面中間的那二行是顯示該程式每秒讀 (DISK READ) 和寫 (DISK WRITE) 硬碟的量,而不是顯示記憶體的使用資訊。

# iotop


Total DISK READ: 0.00 B/s | Total DISK WRITE: 80.97 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
  264 be/3 root        0.00 B/s   34.70 K/s  0.00 %  8.67 % [jbd2/dm-0-8]
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    4 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    5 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [stopper/0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    7 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [events/0]
    8 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [cgroup]
    9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [khelper]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
略.......


如果想要顯示成累計讀寫硬碟的資料量的話,就需要像下面這行一樣,在 iotop 指令後面加上  「-a 」選項。

# iotop -a

除了「-a」選項之外,iotop 還有幾個比較實用的選項,所以,就來說明一下,下面就是這幾個選項的用法及用途,而要說明的是,這下面這幾個選項和前面提到的「-a」選項都是可以合併使用的,不需要一次只能使用一個選項哩 !

# iotop -o

如果加了「-o」選項,那麼 iotop 就只會顯示正在讀寫硬碟的程式,如果沒有程式在讀寫的話,就不會出現任何的程式。

# iotop -d 10

「-d」 選項是用來設定 iotop 更新的頻率,預設是 1 秒鐘,如果要改成 10 秒更新一次的話,就要用上面這一行指令來調整。

# iotop -p 3093

如果想要只針對某一支正在執行中的程式來監看的話,那麼就會需要用「-p」選項加上要監看的程式的 PID,這樣 iotop 就只會出現這個 PID 的硬碟讀取情形。

# iotop -u xxxxx

用「-p」選項可以監看特定程式,而使用「-u」選項的話,則是可以監看特定使用者所啟動的程式對硬碟的讀取情形,但是,和「-p」選項不同的是,「-u」選項後面要帶入的使用者的帳號名稱而不是代碼。

最後要說明的是 iotop 的批次模式 (batch),iotop 的批次模式會將程式讀寫硬碟的資料依序送到指定的輸出裝置,所以,批次模式適合用來將 iotop 所產出的結果寫到檔案來供程式或處理時使用,而要啟用批次模式的話,需要使用「-b」選項,然後,可以搭配「-t」選項來要求在產出的資料上,加註日期和時間,同時,也能使用「-n」選項來要求產出幾次資料後停止。

舉例來說,如果要讓 iotop 以批次方式產出三次資料到 io.log 檔案,然後,只產出正在讀取硬碟中的程式,並且,在產出的資料上加時間的話,那麼 iotop 就要用下一面這一行的方式來執行。

# iotop -bot -n 3 > io.log

留言

這個網誌中的熱門文章

c語言-關於#define用法

CMD常用網管指令

PHP 與 JavaScript 之間傳值利用 json