如何找出正在读取磁盘的进程?
How to find out which process is reading disk?
我使用的是 GCP 虚拟机,有时会失去与该虚拟机的 ssh 连接。经过一番排查,我发现在无法ssh到VM的这段时间里,磁盘IO读取很高,接近100MB/s。
我很确定我不是 运行 任何需要磁盘 IO 的进程。所以我需要找出是哪个进程做的。
我该怎么做?我检查了 /var/log 中的日志,没有可疑的日志。
由于读取发生时无法登录虚拟机,因此我需要一些方法将其置于后台。
您可以定期使用 iotop --only
之类的东西(例如 cron)来查看哪个进程正在消耗 IO。您应该能够通过包管理器安装 iotop
(apt
、yum
、...)。看到这个 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
(旋转日志或其他东西)完全填满您的磁盘。
我使用的是 GCP 虚拟机,有时会失去与该虚拟机的 ssh 连接。经过一番排查,我发现在无法ssh到VM的这段时间里,磁盘IO读取很高,接近100MB/s。
我很确定我不是 运行 任何需要磁盘 IO 的进程。所以我需要找出是哪个进程做的。
我该怎么做?我检查了 /var/log 中的日志,没有可疑的日志。
由于读取发生时无法登录虚拟机,因此我需要一些方法将其置于后台。
您可以定期使用 iotop --only
之类的东西(例如 cron)来查看哪个进程正在消耗 IO。您应该能够通过包管理器安装 iotop
(apt
、yum
、...)。看到这个 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
(旋转日志或其他东西)完全填满您的磁盘。