it-swarm.cn

找出正在写入硬盘的进程

在我的Lenovo T400和Ubuntu上,硬盘驱动器写入指示灯一直闪烁。我想知道在Linux中是否可以找出正在对硬盘进行I/O的进程?就像top一样,您可以找出哪些进程正在占用最多的CPU和内存。

33
Tim

Iotop 是满足您需求的好工具。它还允许通过DISK READ,DISK WRITE,SWAPIN和IO(总百分比))显示累计的I/O量,这是通过一个漂亮的界面:

  • 你只要按 a 在键盘上,它会将最饥饿的进程排在最前面。
  • 颠倒顺序,您只需按 r
  • 如果要按其他列排序,只需按向左/向右键。

top一样, 演示文稿 很忙。另一件事是,它没有top的众多选项(例如,我无法选择隐藏任何列,我对此不感兴趣),但该工具足以满足其特定目的。

42
tshepang

您可以使用lsofman lsof )。以下内容将返回所有可以写入的文件列表:

lsof | grep -e "[[:digit:]]\+w"
15
James Sumners

使用strace

2
user541686

尤其是对于磁盘活动较少的情况,有必要在批处理模式下使用iotop,以防止短访问线路快速消失。答案是 如何在Linux中按文件名记录文件系统的读/写操作? 显示了如何执行此操作。

到目前为止,iotop是最佳的整体解决方案。以下命令为使用磁盘的所有进程提供实时输出。

iotop -bktoqqq -d .5

where: -b     is batch mode
       -k     is kilobytes/s
       -t     adds timestamp
       -o     only show processes or threads actually doing I/O
       -qqq   removes output headers
       -d .5  updates every .5 seconds

有了进程ID后,您还可以找到带有

 lsof -p $PID
2
Frank Breitling