Immaginate di dover attivare una certa operazione solo se il contenuto di un file su server cambia. Il sistema CRON potrebbe non essere l’ideale, perché si dovrebbe attivare un check ogni minuto manualmente. In questi casi si può ricorrere ad INCRON, ovvero un sistema che consente di verificare la modifica di un file/directory (es modifica del file, modifica dei permessi, etc).
Installiamo INCRON:apt-get install incron
Innanzitutto, se esiste il file /etc/incron.allow solo gli utenti elencati nello stesso, potranno usare il servizio.
Per verificare le eventuali entry di INCRON già create, basta digitare:incrontab -l
Per iniziare a creare una nuova entry, bisogna digitare:incrontab -e
Il formato del file è:
1 | <path><mask><command> |
dove path indica il file/directory da monitorare, mask è il tipo di operazione da monitorare e command è il comando da eseguire.
Il parametro mask può essere uno dei seguenti:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | IN_ACCESS File was accessed(read)(*) IN_ATTRIB Metadata changed(permissions,timestamps,extended attributes,etc.)(*) IN_CLOSE_WRITE File opened forwriting was closed(*) IN_CLOSE_NOWRITE File notopened forwriting was closed(*) IN_CLOSE Acombination of IN_CLOSE_WRITE andIN_CLOSE_NOWRITE IN_CREATE File/directory created inwatched directory(*) IN_DELETE File/directory deleted from watched directory(*) IN_DELETE_SELF Watched file/directory was itself deleted IN_MODIFY File was modified(*) IN_MOVE_SELF Watched file/directory was itself moved IN_MOVED_FROM File moved out of watched directory(*) IN_MOVED_TO File moved into watched directory(*) IN_MOVE Acombination of IN_MOVED_FROM andIN_MOVED_TO IN_OPEN File was opened(*) IN_ALL_EVENTS All of the above events |
L’evento contrassegnato con * può avvenire su un file della cartella ed in questi casi viene ritornato come parametro il solo nome del file e non l’itero path.
Inoltre questi parametri possono essere specificati nel campo mask:
1 2 3 | IN_DONT_FOLLOW Don'tdereference pathname ifit isasymbolic link IN_ONESHOT Monitor pathname foronly one event IN_ONLYDIR Only watch pathname ifit isadirectory |
Infine c’è anche IN_NO_LOOP che disabilita il monitoraggio finché un processo che sta gestendo il file non è terminato.
Il parametro
1 2 3 4 5 | $$ dollar sign $@ watched filesystem path(see above) $# event-related file name $% event flags(textually) $& event flags(numerically) |
Se si sta controllando una directory, $@ conterrà il path della directory e $# il file che ha scatenato l’evento. Se invece si sta controllando un file, $@ conterrà il path completo del file e $# sarà vuota.
Bene, iniziamo. Avviamo la modailità di creazione delle regole per INCRON con:incrontab -e
ed inseriamo:/tmp/ IN_MODIFY echo "$$ $@ $# $% $&"
Questo esempio permetterà di vedere nel file /var/log/syslog i dettagli delle modifiche ai files presenti in /tmp.
Vediamo ora un esempio utile, ad esempio ricaricare la configurazione di apache se cambiano i dettagli dei virtual-hosts. Accediamo in modifica al file di INCRON e digitiamo:/etc/apache2/sites-available/ IN_MODIFY /usr/sbin/service apache2 reload
Solo a titolo di verifica, provate a modificare un file ed a controllare che ci sia la relativa entry /var/log/syslog ed il dettaglio in /var/log/apache2/error.log.
Infine, se si vuole cancellare completamente il file INCRON per l’utente, basterà digitare:incrontab -r
enjoy!
Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta