Finden Sie heraus, welcher Prozess in ein bestimmtes Verzeichnis schreibt

19

Ich habe ein Verzeichnis / some / dir und sehe, dass dort ständig neue Dateien erscheinen. Wie finde ich heraus, welcher Prozess diese Dateien erstellt?

homer5439
quelle

Antworten:

18

Versuchen Sie es lsof +r2 | grep '/some/dir'. Dadurch werden Prozesse angezeigt, die auf / some / dir zugreifen, und alle 2 Sekunden aktualisiert.

weh
quelle
2
Thaks, das ist ziemlich nah an dem, was ich brauche, da es zuerst die gesamte Liste der geöffneten Dateien erzeugt und dann nach / some / dir filtert. Wenn Prozesse die Dateien jedoch sehr schnell erstellen und sie nicht geöffnet lassen, kann es sein, dass in den oben genannten Fällen sogar einige fehlen. Ich denke in diesem Fall ist die einzige Option das Audit-Subsystem, oder?
Homer5439
Ihre Annahme ist richtig. Eine andere Idee ist, inotifywait zu verwenden (siehe linux.die.net/man/1/inotifywait
weeheavy
danke, ich hatte inotify tools schon in betracht gezogen, aber ich stellte fest, dass sie nur auf Dateisystemebene funktionieren und nicht in der Lage zu sein scheinen, Informationen darüber zu liefern, wer was getan hat.
Homer5439
18

Verwenden Sie das Kernel- auditSubsystem

auditctl -w /some/dir/ -p war -k whatsgoingon

Dadurch wird ein Hook eingerichtet, der darauf wartet, dass unter / some / dir / etwas passiert.

Stellen Sie dann sicher, dass der auditdDaemon ausgeführt wird. Warten Sie danach einfach, bis Dateien /var/log/auditd.logangezeigt werden, und lesen Sie, was und durch welchen Prozess von oder an welcher Stelle in Ihrem System geschehen ist.

Janne Pikkarainen
quelle
Vielen Dank, es sieht so aus, als ob es genau das tut, obwohl es die installierten Audit-Tools erfordert, die wahrscheinlich nicht überall standardmäßig vorhanden sind. Aber ok, wenn man diese Informationen braucht, können sie immer installiert werden.
Homer5439
Als Hinweis für die Leute, die dies sehen: Sie können keine Watches in den Verzeichnissen der obersten Ebene platzieren (vom Kernel verboten)
Tony Sepia
1
Das ist wirklich ein effizienter Weg! Vielen Dank!!! Übrigens, wenn Sie fertig sind, können Sie alle Haken entfernen, um zu vermeiden, dass das Überwachungsprotokoll für immer von geschrieben wird auditctl -D. Sie können verwenden, auditctl -lum alle Hooks aufzulisten.
Robert
0

lsof kann helfen:

# lsof -r1 /some/dir/*
Quanten
quelle
1
Vielen Dank. Ist es richtig, dass der obige Befehl nur angibt, wer auf vorhandene Dateien zugreift, aber für neu erstellte Dateien nichts anzeigt? Nach meinem Verständnis wird / some / dir / * auf die Liste der Dateien erweitert, die zum Zeitpunkt des Befehlsaufrufs vorhanden sind.
Homer5439