如何找出正在读取磁盘的进程?

How to find out which process is reading disk?

我使用的是 GCP 虚拟机,有时会失去与该虚拟机的 ssh 连接。经过一番排查,我发现在无法ssh到VM的这段时间里,磁盘IO读取很高,接近100MB/s。

我很确定我不是 运行 任何需要磁盘 IO 的进程。所以我需要找出是哪个进程做的。

我该怎么做?我检查了 /var/log 中的日志,没有可疑的日志。

由于读取发生时无法登录虚拟机,因此我需要一些方法将其置于后台。

您可以定期使用 iotop --only 之类的东西(例如 cron)来查看哪个进程正在消耗 IO。您应该能够通过包管理器安装 iotopaptyum、...)。看到这个 link :

https://www.tecmint.com/iotop-monitor-linux-disk-io-activity-per-process/

如果上面的 link 出现故障,您可以在 crontab 中添加如下内容:

* * * * * root iotop -botqqq --iter=3 >> /var/log/iotop

每分钟检查每个进程的 IO 使用情况(您可以每 5 分钟、每 10 分钟等更改)。请注意,您没有用 /var/log/iotop(旋转日志或其他东西)完全填满您的磁盘。