TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
La "vita'' dei file in un sistema GNU/Linux
Il file system è soggetto a mutamenti continui e in costante evoluzione ma il kernel sa sempre cosa accade e agisce di conseguenza. Scopri come
(pagina 2 di 10)


I simboli di Incron
Indispensabili per schedulare gli eventi
SIMBOLO DESCRIZIONE$$ Il carattere $$@ La directory monitorata$# Il file a cui si riferisce l’evento$% I simboli che rappresentano l’evento (espressione testuale)$& I simboli che rappresentano l’evento (valore esadecimale)I backend di logsend Può utilizzare anche inotify L’utility logsend può utilizzare vari programmi o servizi, chiamati backend, per monitorare i file. Uno di questi è appunto inotify che va quindi selezionato durante la fase di configurazione.Cominciamo con gli inotify-toolsQuesto package raggruppa una libreria C++ che facilita la scrittura di programmi di interfacciamento delle chiamate al kernel e due utility particolarmente utili all’interno dei propri script: inotifywatch e inotifywait. Per installarle entrambe occorre eseguire i seguenti comandi:apt-get install libinotifytools0-devapt-get install inotify-toolsIn breve, inotifywait ferma l’elaborazione finché non si verifica un determinato evento su file o directory. Possiamo dire che è una sorta di sleep condizionato da eventi su file o directory. Diversamente, inotifywatch conta e categorizza gli eventi che in un determinato lasso di tempo hanno coinvolto uno o più file o directory. Per i lettori più esperti commentiamo, invece, il breve codice di esempio in linguaggio C (directory ~/plus/Inotify), tratto dal sito di inotify-tools (http://inotify-tools.sourceforge.net/api/inotifytools_8h. html). Vanno inclusi i file header di inotify-tools con le dichiarazioni delle funzioni di libreria:#include #include Quella che segue, invece, è un’inizializzazione necessaria prima di ogni altra chiamata:if ( !inotifytools_initialize() ) {fprintf(stderr, “%s”, strerror( inotifytools_error() ) );return -1;}In pratica, tramite la funzione inotify_watch_recursively possiamo creare un punto di monitoraggio indicando il file o la directory e i relativi eventi da controllare. Gli eventi sono quelli già definiti da inotify e illustrati più avanti. Il programma in questione dovrà monitorare la directory di esecuzione del programma e intercettare tutti gli eventi possibili (IN_ALL_EVENTS):if ( !inotifytools_watch_recursively( “.”, IN_ALL_ EVENTS ) ) {fprintf(stderr, “%s”, strerror ( inotifytools_error() ) );return -1;}Quello che segue, invece, è la definizione del formato per il timestamp dell’evento:inotifytools_set_printf_timefmt( “%T” );Ancora più avanti troviamo l’allocazione della struttura event in cui verranno salvate tutte le informazioni relative all’evento accaduto. La struttura sarà ritornata dalla funzione inotifytools_next_event, la quale mette il programma in attesa del primo evento:struct inotify_event * event = inotifytools_next_event( -1 );A questo punto, appena si verifica il primo evento si stampano le informazioni ad esso relative, dopodiché il programma si mette in attesa del prossimo evento all’interno di un ciclo senza fine:while ( event ) {inotifytools_printf( event, “%T %w%f %e” );event = inotifytools_next_event( -1 );}Infine, per compilare e lanciare il programma bisogna eseguire i comandi seguenti:gcc -oin_example -linotifytools in_example.c./in_exampleSe a questo punto in un altro terminale e sotto la stessa directory di lancio del programma in_example eseguiamo il comando touch nome_ file, è possibile verificare che in_example restituisce istantaneamente il seguente risultato:12:51:43 ./nome_file CREATE12:51:43 ./nome_file OPEN12:51:43 ./nome_file ATTRIB12:51:43 ./nome_file CLOSE_WRITE,CLOSEA questo punto, è facile capire che il comando touch su un file che non esiste ha scatenato quattro eventi prontamente restituiti da inotify: creazione, apertura, modifica degli attributi e chiusura del file.

Configurazione del backend utilizzato da logsend

Eventi di baseLe operazioni che è possibile eseguire sui filePARAMETRO DESCRIZIONE EVENTOIN_ACCESS Nuovo accesso al file/directoryIN_ATTRIB Modifica degli attributi del file/directoryIN_CLOSE_WRITEChiusura di un file aperto in scritturaIN_CLOSE_NOWRITEChiusura di un file aperto in letturaIN_CREATE Creazione di un nuovo file o di una cartella nella directory monitorataIN_DELETE Cancellazione di un file o di una directory nella directory monitorataIN_DELETE_SELFCancellazione del file o della directory monitorataIN_MODIFY Mo
Lascia un commento
Tag: file system, linux, kernel, udev, sistema di notifica, inotify, applicazione logsend, utility incron
Condividi