Überwachen der Dateisystemaktivität

Überwachen der Dateisystemaktivität

Angenommen, ich habe ein Programm und möchte dessen Dateisystemaktivität überwachen (welche Dateien/Verzeichnisse erstellt/geändert/gelöscht werden usw.). Dieses Programm kann möglicherweise weitere Prozesse erzeugen, und daher möchte ich auch die Aktivität dieser erzeugten Prozesse abrufen.

Wie gehe ich dabei vor?

Antwort1

Sie könnenstracedafür:

strace -f -e trace=file command args...

straceverfolgt Systemaufrufe und druckt eine Beschreibung davon in die Standardfehlerausgabe, sobald sie auftreten. Die -fOption weist das Programm an, auch untergeordnete Prozesse und Threads zu verfolgen. Mit dieser Option -ekönnen Sie die zu verfolgenden Aufrufe ändern: -e trace=filejede Verwendung von open, unlink, usw. wird protokolliert, aber keine Aktionen, die keine Dateien betreffen.

Wenn Sie sehen möchten, was aus Dateien gelesen und in sie geschrieben wurde, ändern Sie es -e trace=file,read,writestattdessen in ; dort können Sie auch alle weiteren Aufrufe auflisten, die Sie untersuchen möchten. Wenn Sie dieses Argument ganz weglassen, erhalten Sie jeden Systemaufruf.

Die Ausgabe sieht folgendermaßen aus (ich habe sie mkdir /tmp/testin einer verfolgten Shell ausgeführt):

[pid  1444] execve("/usr/bin/mkdir", ["mkdir", "/tmp/test4"], [/* 33 vars */]) = 0
[pid  1444] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
[pid  1444] open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
[pid  1444] open("/usr/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
[pid  1444] open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
[pid  1444] mkdir("/tmp/test", 0777)    = 0
[pid  1444] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=1444, si_status=0, si_utime=0, si_stime=0} ---

Mit können Sie sich in eine Datei statt ins Terminal einloggen -o filenameund die Ausgabe mit -v (noch) ausführlicher machen. -p PIDFalls das nützlicher ist, können Sie sich auch mit an einen bereits vorhandenen Prozess anhängen.

Wenn Sie dies programmgesteuert tun möchten, anstatt es selbst zu überprüfen, schauen Sie sich dieptraceAnruf, worauf straceaufgebaut wird.

verwandte Informationen