2017-09-29 3 views
-1

in Windows nicht einlesen kann, verwende ich sysinternals 'processpx, um festzustellen, ob ein Prozess versucht, auf eine Datei zuzugreifen, die nicht vorhanden ist. Gibt es eine Möglichkeit, dies auf osx zu tun?Erkennen, ob ein Prozess eine Datei

+1

Warum das Linux-Tag? Betrachten Sie "strace" oder "dtruss" –

Antwort

1

Sie können dies relativ einfach mit einem Dtrace-Skript tun.

Wir möchten alle offenen Aufrufe für Dateiname, aufzeichnen, wenn das Öffnen fehlschlägt, und das Errno ist ENOENT, dann zeigen Sie den Prozessnamen, PID und Dateiname.

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

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

dann sudo dtrace -s <script>.

Auf OSX werden jedoch mit dem Systemintegritätsschutz viele Prozesse nicht überwacht.

Verwandte Themen