检测进程是否无法归档文件

Detect if a process can't file a file

在 windows 中,我使用 sysinternals 的 processpx 来检测进程是否试图访问不存在的文件。 有没有办法在 osx 上执行此操作?

您可以使用 dtrace 脚本相对轻松地完成此操作。

我们要记录所有打开的文件名调用, 如果打开失败,errno为ENOENT,则显示进程名、pid和文件名。

syscall::open*:entry
{ self->path = copyinstr(arg0); }

syscall::open*:return
/ arg0 < 0 && errno == ENOENT /
{ printf("%s(%d): %s", execname, pid, self->path); }

然后 sudo dtrace -s <script>.

在OSX,虽然有系统完整性保护,很多进程不会被这个监控。