2009-02-04 18 views

risposta

23

Vedere inotify.

Con inotify è possibile visualizzare una directory per la creazione di file.

+3

Inotify non supporta la visualizzazione ricorsiva delle directory, ovvero è necessario creare un orologio inotify separato per ogni sottodirectory. Tienilo a mente. – Jason

+0

Vedere anche il pacchetto chiamato [incron] (http://inotify.aiken.cz/?section=incron&page=why) e la sua [man page] (http://linux.die.net/man/5/incrontab). Non sono sicuro di come gestisca le sottocartelle. – BeowulfNode42

+0

No, incron non gestisce le sottocartelle, ha fallito completamente in una campagna "indiegogo" appropriata, e incron si è assopita nel 2012. Triste, ma ha raggiunto un vicolo cieco. Spero davvero, inotify rimarrà ;-) – Frunsi

0

Una soluzione a cui ho pensato è creare un "listener di file" abbinato a un cron job. Non sono pazzo di questo, ma penso che potrebbe funzionare.

+0

Se si desidera elaborarli al più presto, non vi è alcun modo per inotify. –

25

Prima di tutto assicuratevi inotify-tools in installato.

poi usarli come questo:

logOfChanges="/tmp/changes.log.csv" # Set your file name here. 

# Lock and load 
inotifywait -mrcq $DIR > "$logOfChanges" & 
IN_PID=$$ 

# Do your stuff here 
... 

# Kill and analyze 
kill $IN_PID 
while read entry; do 
    # Split your CSV, but beware that file names may contain spaces too. 
    # Just look up how to parse CSV with bash. :) 
    path=... 
    event=... 
    ... # Other stuff like time stamps? 
    # Depending on the event… 
    case "$event" in 
    SOME_EVENT) myHandlingCode path ;; 
    ... 
    *) myDefaultHandlingCode path ;; 
done < "$logOfChanges" 

alternativa, utilizzando --format anziché -c su inotifywait sarebbe un'idea.

Solo man inotifywait e man inotifywatch per ulteriori informazioni.

È anche possibile utilizzare incron e utilizzarlo per chiamare uno script di gestione.

+1

Grazie, la migliore risposta finora. Ero sicuro che c'era qualcosa di carino con inotify e questo è esattamente. Funziona come un incantesimo. – akostadinov

Problemi correlati