(6 Antworten)
Vor 4 Jahren geschlossen.
Wie kann ich bei gegebenem Dateipfad feststellen, welcher Prozess ihn erstellt (und/oder darauf liest/schreibt)?
Akzeptierte Antwort:
Die lsof Befehl (bereits in mehreren Antworten erwähnt) sagt Ihnen, welcher Prozess eine Datei zum Zeitpunkt der Ausführung geöffnet hat. lsof
ist für fast jede Unix-Variante verfügbar.
lsof /path/to/file
lsof
wird Sie nicht über Dateien informieren, die vor zwei Mikrosekunden geöffnet und vor einer Mikrosekunde geschlossen wurden. Wenn Sie eine bestimmte Datei überwachen und auf Zugriffe reagieren müssen, benötigen Sie andere Tools.
Wenn Sie etwas vorausplanen können, können Sie die Datei auf einem LoggedFS ablegen Dateisystem. LoggedFS ist ein FUSE Stacked Filesystem, das alle Zugriffe auf Dateien in einer Hierarchie protokolliert. Die Protokollierungsparameter sind in hohem Maße konfigurierbar. FUSE ist auf allen großen Unices verfügbar. Sie sollten Zugriffe auf das Verzeichnis protokollieren, in dem die Datei erstellt wird. Beginnen Sie mit der bereitgestellten Beispielkonfigurationsdatei und optimieren Sie sie gemäß dieser Anleitung.
loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory
tail -f /path/to/log_file
Viele Unices bieten andere Überwachungseinrichtungen an. Unter Linux können Sie das relativ neue Audit-Subsystem verwenden. Es gibt nicht viel Literatur darüber (aber mehr als über logfs); Sie können mit diesem Tutorial oder einigen Beispielen oder einfach mit dem auditctl
beginnen Manpage. Hier sollte es ausreichen, sicherzustellen, dass der Daemon gestartet ist, und dann auditctl
auszuführen :
auditctl -w /path/to/file
(Ich denke, ältere Systeme brauchen auditctl -a exit,always -w /path/to/file
) und sehen Sie sich die Protokolle in /var/log/audit/audit.log
an .