Öffnen Sie ein Terminal und führen Sie Folgendes aus, um alle Dateizugriffe im aktuellen Verzeichnis in Echtzeit zu überwachen:
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 setzt ein Betriebssystem wie Linux voraus, das dies unterstützt inotifywait
.
Der Körper der while
Schleife kann durch alles ersetzt werden, was Ihrem Zweck entspricht.
Die Optionen haben folgende Bedeutung inotifywait
:
-r
Rekursiv über Unterverzeichnisse überwachen.
-m
Kontinuierlich überwachen.
-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'
Schreiben Sie den Pfad und die Datei jeder aufgerufenen Datei nach Standard heraus.
.
Überwachen Sie das aktuelle Verzeichnis .
.
Verjährung
Der obige Code behandelt keine Dateinamen, die Zeilenumbrüche enthalten. Um das zu handhaben, muss man die -csv
Option inotifywait zusammen mit mehr Code verwenden, der die Feinheiten des CSV-Formats versteht.