Ich benutze "opensnoop"
/usr/bin/opensnoop
um alle Dateien anzuzeigen, die aus verschiedenen Prozessen geöffnet wurden.
Aber wenn ich eine Datei mit spezifizieren möchte
sudo opensnoop -n "directory/filename"
Ich erhalte diesen Fehler:
token too large, exceeds YYLMAX
Ich bin auf der Suche nach einer Lösung und habe nur diese Website gefunden . Der Autor hat das opensnoop-Skript geändert:
Dies liegt an Zeile 154 in / usr / bin / opensnoop, die die Inline-Zeichenfolge NAME = "'$ pname'" enthält. das erzeugt ein dtrace-Skript mit dieser zitierenden Inline-Zeichenfolge NAME = "foo '' bar"; und das erste einfache Anführungszeichen beendet den dtrace-Aufruf und lässt sein Eingabeskript unvollständig. Der schnelle Patch besteht darin, Zeile 154 durch die Inline-Zeichenfolge NAME = "'" $ pname "'" zu ersetzen.
aber ich bekomme immer noch diese Fehlermeldung.
Kann mir jemand helfen? Oder sagen Sie mir ein anderes Dienstprogramm, mit dem ich die App anzeigen kann, die gerade mit einer bestimmten Datei arbeitet?
-n
wird verwendet, um den zu beschnüffelnden Prozessnamen zu identifizieren. Warum benötigen Sie dafür einen Pfad?sudo opensnoop -n System\ Preferences
denselben Fehler aus, und -f funktioniert auch nicht mit Pfaden mit Leerzeichen.Antworten:
-n
ist nur zur Verwendung mit Prozessnamen wie gedachtsudo opensnoop -n System\ Preferences
. Verwenden Sie, um zu sehen, welche Prozesse auf eine Datei zugreifensudo opensnoop -f /tmp/a\ b.txt
.Die im Blog-Beitrag erwähnte Änderung behebt -n, aber nicht -f. Um beide zu beheben, bearbeiten
/usr/bin/opensnoop
und ersetzen Sie diese Zeilen:Mit diesem:
quelle
sudo opensnoop -f ~/Pictures/Screenshot.png
.