2017年10月31日 星期二

[Linux 文章收集] iotop - 監看每支程式讀寫硬碟的情形

Source From Here 
Preface 
阿舍之前有介紹過用 NetHogs 來檢查每支在跑的程式各使用了多少的頻寬,這是 Server 端比較會用到的工具,而這次阿舍要介紹的,是個人電腦比較會用到的東西,就是用來查看看,是誰一直、一直在讀寫硬碟哩 ! 阿舍會用到這種工具的情況,就是當電腦沒在做什麼事的時候,硬碟的燈還一直的給它亮著或是閃不停的時候哩 ! 
 

Install iotop 
阿舍在網路上找到有幾支程式可用,阿舍大概的比較了一下,最後選了這個 iotop 來用,阿舍選 iotop 是因為它很簡單易用和易看,用法和 top 指令很像,而且,在 Ubuntu 內建的 PPA 就有放 iotop,所以,只要用下面這一行的 apt-get 指令來安裝就可以了。 
# sudo apt-get install iotop


iotop Usage 
在安裝好之後,只要用下面這一行來啟動就可以了,要注意的是,一定要用 sudo 來執行,否則,會因為權限問題而出現錯誤訊息的,iotop 啟動後的顯示畫面和 top 指令幾乎是一模一樣的,最大的差別是在畫面中間的那二行是顯示該程式每秒讀 (DISK READ) 和寫 (DISK WRITE) 硬碟的量,而不是顯示記憶體的使用資訊。 
# sudo iotop

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

除了「-a」選項之外,iotop 還有幾個阿舍覺得比較實用的選項,所以,就來說明一下,下面就是這幾個選項的用法及用途,而要說明的是,這下面這幾個選項和前面提到的「-a」選項都是可以合併使用的,不需要一次只能使用一個選項哩 ! 如果加了「-o」選項,那麼 iotop只會顯示正在讀寫硬碟的程式,如果沒有程式在讀寫的話,就不會出現任何的程式哩 ! 
# sudo iotop -o

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

如果想要只針對某一支正在執行中的程式來監看的話,那麼就會需要用「-p」選項加上要監看的程式的 PID,這樣 iotop 就只會出現這個 PID 的硬碟讀取情形哩; 用「-p」選項可以監看特定程式,而使用「-u」選項的話,則是可以監看特定使用者所啟動的程式對硬碟的讀取情形,但是,和「-p」選項不同的是,「-u」選項後面要帶入的曞人使用者的帳號名稱而不是代碼: 
# sudo iotop -u arthuryu

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

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


Supplement 
Monitor Disk I/O activity using IOTOP & IOSTAT commands

沒有留言:

張貼留言

[ JS 常見問題 ] Javascript Date output formatting

Source From  Here   Question   I need to  capture the Now() date and time in the YYYY/mm/dd hh:m:sec format . It needs to be in GMT time. Ho...