2011-03-02 18 views
15

我正在使用Ubuntu。有一些進程在我的服務器上頻繁執行,即使是「ls」命令也需要1秒的時間才能執行。我想知道哪個進程如此沉重,是否有很好的命令或工具?如何找到頻繁做io的進程?

謝謝。

+0

要接受答案,請點擊您的首選答案旁邊的複選標記。 – 2011-03-02 13:08:43

+0

可能的重複[如何找到正在使用最多I/O的進程?](http://stackoverflow.com/questions/466496/how-to-find-the-process-which-is-cosuming -lin-linux-in-most-io) – dogbane 2011-03-02 13:09:44

回答

21

您可以使用iotop來查找過於沉重的進程。

+3

不要忘記用** sudo **來運行iotop,否則它會失敗。 – Eye 2012-08-03 02:30:53

6

iotop有一個類似頂部的接口,並顯示每個進程正在進行多少I/O讀取和寫入操作。

6

您可以使用atop,它可以根據進程報告磁盤讀取和寫入以及其他許多事情。

Disk utilization — key 'd'

7

一個快速的方法是看/proc/[PID]/io文件。

例子:

$ cat /proc/1944/io 
read_bytes: 17961091072 
write_bytes: 8192000 
cancelled_write_bytes: 32768 
+0

你已經寫了關於最好的方法:)它可用於控制進程的寫腳本。當進程消耗太多的io時,可以通過sigstop來停止,並且在io停止之後,它應該由sigcont來喚醒:) – Znik 2014-08-05 09:55:50

2

你可以試試pidstat。 我發現它很有用,當我需要確定哪個進程成爲高io時。