ubuntuusers.de

inotify

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |
Dieses Thema ist die Diskussion des Artikels inotify.

Lasall

Ehemalige
Avatar von Lasall

Anmeldungsdatum:
30. März 2010

Beiträge: 7723

Hi pxstein,

du schriebst:

Ich will inotify verwenden um festzustellen welche Dateien während einer Installation eines Paketes xxxxx neu erstellt/gelöscht/geändert wurden.

dpkg -L PACKAGE, apt-file search PACKAGE | grep PACKAGE:, ... sind nicht gewuenscht?

1.) Was ist der Unterschied zwischen einem Konstrukt:

while true; do inotifywait ....; done

und

inotifywait --monitor .....;

Mit der while-Schleife wird bei jedem Ereignis, welches erfasst wird, ein Kommando ausgefuehrt (und danach weiter ueberwacht). Mit "--monitor" wird nur ueberwacht.

Hmm wie gross ist die Maximalzahl der zu überwachenden Verzeichnisse?

Meine Manpage sagt:

-r, --recursive Watch all subdirectories of any directories passed as arguments. Watches will be set up recursively to an unlimited depth. Symbolic links are not traversed. Newly created subdirectories will also be watched.

Warning: If you use this option while watching the root directory of a large tree, it may take quite a while until all inotify watches are established, and events will not be received in this time. Also, since one inotify watch will be established per subdirectory, it is possible that the maximum amount of inotify watches per user will be reached. The default maximum is 8192; it can be increased by writing to /proc/sys/fs/inotify/max_user_watches.

Wenn ich meine ganze Ubuntu-Partition vom root Verzeichnis rekursiv abwärts überwachen lasse macht dann mein COmputer die Grätsche?

Je mehr du auf mehr Events ueberwachst, desto mehr muss die CPU arbeiten.

Wenn die Maximalzahl überschritten wird was passiert dann? Bricht inotifywait ab oder ignoriert der Befehl nur die restlichen Verzeichnisse?

Es wird abgebrochen.

3.) Wie würde der Befehl lauten wenn ich meine ganze Partition exclusive des /temp Verzeichnisses für die Dauer einer Installation überwachen wollte? Funktioniert:

inotifywait -m -r --exclude /temp /

Nein, nicht mit gewuenschtem Ergebnis. Minimal sollte es so aussehen:

inotifywait -m -r @/tmp @/sys @/dev @/proc /

Allerdings wird es so nicht moeglich sein, "normale" Zugriffe von denen der Paketverwaltung zu unterscheiden. Deswegen wuerde ich auf die Tools um dpkg zurueckgreifen. Evtl. laesst sich da auch mit lsof arbeiten.

Bitte weitere Supportfragen im entsprechendem Forum stellen.

Gruss Lasall

fpunktk

(Themenstarter)
Avatar von fpunktk

Anmeldungsdatum:
24. Oktober 2007

Beiträge: 142

Lasall schrieb:

Hi pxstein,

du schriebst:

1.) Was ist der Unterschied zwischen einem Konstrukt:

while true; do inotifywait ....; done

und

inotifywait --monitor .....;

Mit der while-Schleife wird bei jedem Ereignis, welches erfasst wird, ein Kommando ausgefuehrt (und danach weiter ueberwacht). Mit "--monitor" wird nur ueberwacht.

Den wichtigen Unterschied habe ich schon im Wikiartikel aufgeschrieben: Beim while-Konstrukt werden Events nicht erkannt, die stattfinden, während die Befehle in der Schleife ausgeführt werden. Mit --monitor bekommt man aber alle Events.

Wenn du wissen willst, welche Dateien sich geändert haben: vorher und hinterher ein "Bild" von allen Dateien machen (Name, Größe, Zugriffszeiten). Das ist aber auch nur sehr aufwendig und du bekommst Änderungen durch andere Prozesse ebenfalls mit rein.

Antworten |