Um in Echtzeit alle Dateizugriffe unter dem aktuellen Verzeichnis zu überwachen, öffnen Sie ein Terminal und führen Sie Folgendes aus:
inotifywait -r -m -e access --format '%w%f' . | while IFS='' read -r fname; do [ -f "$fname" ] && lsof "$fname"; done
Oder über mehrere Zeilen verteilt:
inotifywait -r -m -e access --format '%w%f' . | while IFS='' read -r fname do [ -f "$fname" ] && lsof "$fname" done
Dies erfordert ein Betriebssystem wie Linux, das unterstützt wird inotifywait
.
Der Körper der while
Schleife kann durch alles ersetzt werden, das zu Ihrem Zweck passt.
Die Bedeutung der Optionen inotifywait
ist:
-r
Überwachen Sie rekursiv durch Unterverzeichnisse.
-m
Überwachen Sie kontinuierlich.
-e access
Überwachen Sie ACCESS-Ereignisse. Es gibt viele mögliche Ereignisse, die von Interesse sein könnten, aber dies scheint am ehesten mit dem übereinzustimmen, wonach Sie gefragt haben.
--format '%w%f'
Geben Sie den Pfad und die Datei jeder aufgerufenen Datei als Standard ein.
.
Überwachen Sie das aktuelle Verzeichnis
.
.
Verjährung
Der obige Code behandelt keine Dateinamen, die Zeilenumbrüche enthalten. Um damit umzugehen, muss man die -csv
Option inotifywait zusammen mit mehr Code verwenden, der die Feinheiten des CSV-Formats versteht.