找出哪些进程正在写入硬盘

找出哪些进程正在写入硬盘

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

答案1

奥托普(简单的类似顶部的 I/O 监视器)是满足您需求的好工具。它还允许显示 DISK READ、DISK WRITE、SWAPIN 和 IO 中任何一项的累计 I/O 量(总体百分比)。这是通过一个漂亮的界面实现的:

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

喜欢top,演示文稿比较忙。另一件事是它没有无数的选择top有(例如,我不能选择隐藏任何我不感兴趣的列),但该工具对于其特定目的来说已经足够好了。

答案2

您可以使用lsof曼勒索夫)。以下将返回所有打开以供写入的文件的列表:

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

答案3

特别是对于低磁盘活动,有必要在批处理模式下使用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

答案4

fatrace可以帮助你。无耻地链接到我自己在另一个问题上的回答:

iotop 但对于特定磁盘?

相关内容