我正在寻找一些可以记录非系统磁盘唤醒时间的小脚本或应用程序。
我无法确定哪个应用程序或脚本唤醒了我的非系统驱动器(在我使用它之前,它必须处于休眠状态)。我已经设置了 noatime 标志,尝试使用 powertop 和 iotop 来确定哪个应用程序可以阻止它进入休眠状态 - 但没有结果。
所以我的计划是将这个驱动器设置为睡眠状态(hdparm -Y)并查看它在什么时候被定期唤醒。
谢谢您的任何建议。
答案1
为了找出正在访问的文件(这可能有助于缩小负责的进程的范围),您可以尝试使用inotifywatch
可以将其设置为递归监视您选择的目录下的目录。请务必阅读手册页中有关--recursive
在大型树上使用的警告。
当该树中的目录中发生文件系统事件时,它会被记录并输出到表中。您可以使用它--timeout
来限制监视处于活动状态的时间。
如果结果一致,您可以对该目录中的文件运行非递归监视以缩小特定文件的范围。
答案2
由于您使用的是 Linux,因此您可以使用新的fatrace
实用程序,它会记录每个文件访问并告诉您哪个进程负责:
更多信息请点击这里:
http://www.piware.de/2012/02/fatrace-report-system-wide-file-access-events/
它利用Linux fanotify API(更多细节) 自 Linux 内核 2.6.37 起可用。
fatrace
自 2014 年 7 月起,大多数发行版均未打包它(它最近进入了 Debian 测试,因此应该在“jessie”中发布),但可以从源代码轻松安装。
答案3
参见这个 ubuntu错误报告如何追踪该问题(以及可能的原因)。
简短回答:auditctl -w /dev/sdX -p rwa
和 udisk
答案4
我无法回答您的问题,但我想向您指出一个可能有趣的细节:几个 sata 硬盘有一个跳线,可默认将它们设置为睡眠状态(控制器必须发送 sata 命令来唤醒磁盘。[并非所有控制器都能做到这一点])。
跳线已设置好吗?
坝