inotify / filesystem überwachen

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

inotify / filesystem überwachen

Beitrag von startx » 21.11.2006 10:26:05

hat jemand von euch erfahrung mit programmen wie

http://sourceforge.net/projects/iwatch

oder kennt vergleichbare tools?

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 21.11.2006 10:35:00

Schon mal damit rumgespielt, scheint ganz nett zu sein.
Die Frage ist halt, was du damit anstellen willst oder was du generell vorhast.

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 21.11.2006 10:52:02

im grunde möchte ich bestimmte verzeichnisse überwachen und über änderungen benachrichtigt werden. hatte mir mal afick angeschaut, inotify zu nutzen scheint mir aber die bessere lösung zu sein.

(@nepos: deinen thread über inotify/system crash habe ich gelesen, hast du antwort von der lkml bekommen?)

das einige frontend, das ich bisher gefunden habe war iwatch. da ich (wenn es gut funktioniert) das gerne auch im grossen stil einsetzten möchte, fand ich die simple xml konfiguration prima.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 21.11.2006 10:58:32

Ach, das alte Problem :)
Ne, an die hab ich mich gar nicht mehr gewandt. Es hat sich herausgestellt, dass eine unserer vier Server-Platten einen Firmware-Bug hatte. Dieser hat sich darin geäußert, dass unter hoher I/O-Last Schreibzugriffe nicht vollständig abgeschlossen wurden und so das Filesystem langsam aber sicher zerstört wurde.

afick ist halt eigentlich ein Integrity-Checker. Den kannst du höchstens als Cron-Job laufen lassen und kriegst halt nur periodisch mit, ob sich was getan hat. Mit inotify kannst du, wenn ichs noch richtig in Erinnerung habe, in Echtzeit überwachen und daraus z.B. Mails generieren oder ähnliches.

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 21.11.2006 11:00:23

Mit inotify kannst du, wenn ichs noch richtig in Erinnerung habe, in Echtzeit überwachen und daraus z.B. Mails generieren oder ähnliches.
ja genau das war mein plan ... nur scheint es (noch) fast keine tools/frontends zu geben. iwatch hab ich grad aufgegeben, da es dutzende von paketen aus etch wollte. (zielsystem war ein sarge server)

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 21.11.2006 11:15:28

Bei mir hatte ich nur mit inotifywait rumgespielt. Mit den entsprechenden Optionen im Monitor-Modus gestartet koenntest du da ganz gut was anfangen denke ich.

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 21.11.2006 11:17:43

Bei mir hatte ich nur mit inotifywait rumgespielt.
ja, aber das erfordert einen upgrade der libc6 auf die version aus sid, nicht grad etwas für den produktionseinsatz.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 21.11.2006 11:34:11

Hm, hatte das bei mir aus den Sourcen gebaut unter Sarge.

Benutzeravatar
Sid Burn
Beiträge: 47
Registriert: 16.11.2006 15:18:02
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: /universe/earth/europe/germany/nrw/essen
Kontaktdaten:

Beitrag von Sid Burn » 21.11.2006 12:13:00

Ich hatte mal zu Testzwecken ein Perl Skript geschrieben das inotify nutzt. Im großen und ganzen hatte ich ein abgespecktes tail geschrieben das inotify nutzt um das verändern der Datei zu erkennen, und wenn die Datei verändert wurde den Rest ausgibt.

Das Systemtool "tail" arbeitet unter Debian nämlich nur so das ein "sleep 1" aufgerufen und die Datei ständig gepoolt wird.

Das Interface an sich ist auch sehr simpel gewesen. Allerdings funktioniert das ganze unter Sarge nicht, wegen Kernel < 2.6.13. Ich habe noch nicht nach gesucht, allerdings gab es davor ja glaube ich SGI::FAM womit sich soetwas glaube ich auch realisieren lässt.


Hier der Sourcecode zu dem kleinen Tool:

Code: Alles auswählen

#!/usr/bin/perl
use warnings;
use strict;
use constant TRUE  => 1;
use constant FALSE => 0;
use Linux::Inotify2;
use IO::Handle;

open my $fh, '<', $ARGV[0]  
    or  die "Cannot open file: $!\n";
$fh->blocking( FALSE );

my $inotify = new Linux::Inotify2  
    or  die "Unable to creat Linux::Inotify2 object: $!\n";
$inotify->watch( $ARGV[0], IN_MODIFY, \&file_changed )  
    or  die "watch creation failed";

sub file_changed {
   while ( sysread $fh, my $buff, 50 ) {
       syswrite STDOUT, $buff;
   }
}

print <$fh>;
1 while $inotify->read;
close $fh;
Weitere Infos gibt es auch unter Linux::Inotify2

Benutzeravatar
startx
Beiträge: 3165
Registriert: 07.12.2002 19:29:48
Wohnort: london

Beitrag von startx » 21.11.2006 13:16:48

Allerdings funktioniert das ganze unter Sarge nicht, wegen Kernel < 2.6.13.
nein, das ist bei mir kein problem. da laufen neuere kernel bei mir.

Antworten