如何找出正在使用文件但目前未使用的进程?

如何找出正在使用文件但目前未使用的进程?

背景

根据 Apple 支持论坛,我和许多其他人一样,在 Mac 的音频设置方面遇到了一些问题。每当计算机进入睡眠或关机状态时,音频都会重置为内置扬声器,系统无法识别音频插孔中插入的设备。重置 NVRAM 或 SMC 可以解决问题,直到机器进入睡眠或关机状态,问题才会消失。

理念

结果是删除了以下文件:

  • /Library/Preferences/Audio/com.apple.audio.DeviceSettings.plist
  • /Library/Preferences/Audio/com.apple.audio.SystemSettings.plist

然后重新启动也可以进行临时修复,但同样,这需要重新启动。我的想法是编写一个 bash 脚本,同时保存这rm两个文件,然后终止使用它们的进程。然而,问题在于找出哪个进程加载了它们。不幸的是,这lsof行不通,因为进程不会持续使用它们,它们在进程启动时被加载,仅此而已。

问题

假设该进程不会持续访问该文件并且可能在登录之前加载这些文件,那么每次重新启动时,我如何找出哪个进程正在加载这些文件?

如果您的 Mac 之前遇到过此问题并且知道如何解决,则可以获得加分。

答案1

*NIX 有一个名为“audit”的守护进程。您可以设置此守护进程来监视文件的任何更改:

男人: https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man8/audit.8.html

它是 OpenBSM,这里是有关它的更多信息:

http://derflounder.wordpress.com/2012/01/30/openbsm-auditing-on-mac-os-x/

相关内容