如何在Linux上追踪永久磁盘访问

我有一台运行less量服务的机器,但是我不认为他们有时会对这台服务器上的大量磁盘访问负责(大量的磁头移动,我可以听到很长时间的几乎没有移动)

如果再次出现这种情况,我怎样才能知道哪个进程在硬盘上做了什么?

我正在考虑使用linux命令“lsof”,但是它的输出和选项都是过度的,所以我什么都看不到。

你能指导我吗?

  • 只显示硬盘存取
  • 这是真正的身体状况目前happing(不缓冲或只打开的文件,实际上是物理阅读或写作)
  • 也许按用户或过程sorting或过滤

如果你能certificate这种情况下lsof的一些有用的select将是很好的。 谢谢。

编辑谢谢你的所有答案。 这比我预期的要多得多,我提出了所有答案(直到今天)

尝试看“ iotop ”。 它会给你你所需要的,每个进程的IO使用率,就像显示一样。 附带最现代的Linux发行版

通常当你有一个服务/应用程序没有执行大量磁盘I / O的系统时,你会注意到很多的硬盘驱动器活动,你会发现系统交换了很多。

这篇文章对这是如何工作的很好的解释:

使用vmstat监视虚拟内存

我也同意top公用事业公司的build议。 但是,如果您查看您的cron作业,则可能会更快地find问题的根源。 检查/etc/cron.*的内容,看是否有任何运行进程的cron作业会导致大量的磁盘I / O。 它可能是像updatedb更新定位数据库一样简单。

如果服务器允许用户login,则还应该检查用户crontabs。 它们通常位于/var/spool/cron/tabs

我有一台运行less量服务的机器,但是我不相信他们有责任在这台服务器上访问大量磁盘

这是否每天发生一次? 如果是,则可能是检查存储库以进行更新的系统,或者如果以此方式configuration安全修补程序,则会自动安装。

您可以更改检查之间的时间间隔,并在Synaptic中configuration自动更新

除非你想了解哪些文件正在被访问的细节,我相信你也可以使用top来获取这些信息。 我使用htoptop封装)来监视I / O使用情况,输出按不同的I / O域进行sorting。 它提供了以下列: RCHAR, WCHAR, SYSCR, SYSCW, IO_READ_RATE, IO_WRITE_RATE, IO_RATE 。 如果这个,如果你需要什么,看看man top

观看top一段时间。 IO绑定程序通常卡在D状态。 因此,通过cpusorting你的最高输出,只要注意哪一个进程将会在D状态下有大量的时间。

所提到的工具对于实时监控来说是非常好的 – 对于一个新的职位来说,这是一个很好的问题:历史上可以使用的是什么 – 用例:

我的盒子在凌晨1点显示出IO尖峰

你怎么知道它来自哪里? :)