![找出访问文件/设备的进程](https://linux22.com/image/122942/%E6%89%BE%E5%87%BA%E8%AE%BF%E9%97%AE%E6%96%87%E4%BB%B6%2F%E8%AE%BE%E5%A4%87%E7%9A%84%E8%BF%9B%E7%A8%8B.png)
连接到我的 Raspberry Pi 的外部硬盘似乎随机旋转,我不知道为什么。它们形成一个 RAID 1,由其mdadm
唯一分区格式化为 ext4。
今天,我设置了一个屏幕运行
$ while true; do inotifywait -r /media/raid/; sleep 300; done
并避免使用我的 RAID。它没有始终监控单个事件,因此似乎没有进程会随机访问我的 RAID 上的文件系统。
在另一个屏幕上,我跑了
# while true; do inotifywait /dev/sd{a,b}* /dev/md1; fuser /dev/sd{a,b}* /dev/md1; sleep 300; done
它记录了全天的许多事件,但只记录了一些 PID。我什至不确定这些来自何处/usr/sbin/smartd -n
以及哪些使硬盘驱动器旋转。/usr/lib/udisks2/udisksd --no-debug
罪魁祸首很可能没有被注意到,因为他们只在很短的时间内打开文件,以至于需要很长时间才能fuser
被调用并生成他们的 PID。
我如何找出这些旋转的原因?
如果对这是重复的怀疑是正确的,我发布了一个新问题关于实际解决问题。
答案1
这个解决方案可能看起来有点极端,但如果您可以重新启动,那么您可以使用 LSM(AppArmor、SELinux)来阻止对挂载点和设备文件的每次访问。然后您将在日志中找到被杀死的进程。
如果您使用学习模式,您甚至可能不必阻止访问。但也许这会创建太多的日志数据。