找出访问文件/设备的进程

找出访问文件/设备的进程

连接到我的 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)来阻止对挂载点和设备文件的每次访问。然后您将在日志中找到被杀死的进程。

如果您使用学习模式,您甚至可能不必阻止访问。但也许这会创建太多的日志数据。

相关内容