GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire automaticamente uno script quando il contenuto di una directory cambia in Linux?

Soluzione 1:

Se sei abbastanza fortunato da essere su una distribuzione basata su debian, apt-get install dnotify . Altre distribuzioni probabilmente hanno qualcosa di simile - cerca il dnotify nome.

dnotify è un semplice programma basato sull'API dnotify del kernel Linux 2.4.19+.dnotify può eseguire un comando specificato ogni volta che cambia il contenuto di una directory specifica. Viene eseguito dalla riga di comando e accetta due argomenti:una o più directory da monitorare e un comando da eseguire ogni volta che una directory viene modificata. Le opzioni controllano su quali eventi attivare il trigger:quando un file è stato letto nella directory, quando ne è stato creato uno, eliminato e così via.

Se vuoi gestirlo all'interno del tuo programma, dnotify è anche l'API che vuoi usare.

Soluzione 2:

Puoi eseguire uno script con gli strumenti inotify, qualcosa del genere. Controllerà la directory per le modifiche nei file modificati, nei nuovi file e nei file eliminati, quindi eseguirà lo script.

#!/bin/sh
while inotifywait -e modify -e create -e delete /home/me/code; do
    rsync [options] /home/me/code/ /media/nfs/code/ 
done

Soluzione 3:

incron è fondamentalmente quello che vuoi, penso. Utilizza inotify come meccanismo di notifica (che, come altri hanno sottolineato, sostituisce dnotify), ma non richiede uno script che venga eseguito continuamente, utilizzando inotifywait o simili (sebbene, ovviamente, il demone incron sia sempre in esecuzione). I "crontab" a livello di sistema e i "crontab" dell'utente sono supportati in modo simile al cron standard, ma invece di specificare gli orari come trigger, vengono utilizzati eventi inotify e nomi di file/directory.

incron è pacchettizzato per molte distribuzioni, incluse Ubuntu e Debian, credo.


Linux
  1. Come eseguire un comando bash Linux in uno script PERL?

  2. Linux – Come eseguire uno script sul blocco/sblocco dello schermo?

  3. Come eseguire uno script di shell quando un file o una directory cambia?

  4. Come eseguire lo script Python sul terminale (ubuntu)?

  5. linux:come eseguire un comando in una determinata directory

Come passare automaticamente a una directory senza utilizzare il comando Cd in Linux

Come eseguire tutti gli script in una directory in Linux

Come visualizzare il contenuto di un archivio o di un file compresso in Linux

Come trovare la dimensione totale di una directory in Linux

Come eseguire lo script della shell come servizio SystemD in Linux

Come migrare la directory HOME su Linux