2015-12-30 20 views
5

Voglio eseguire un cronjob ogni minuto per rilevare tutti i file che sono stati modificati all'ultimo minuto in una directory specifica (con circa 300.000 inode) ed esportare questo elenco di file in un csv.Cronjob per rilevare gli ultimi file modificati

È possibile eseguire un comando ottimizzato per farlo? Non posso eseguire un "find" con flag di ordinamento in questa directory perché è enorme e probabilmente impiegherò più di 1 minuto per eseguire tutti i file.

C'è qualche comando che posso fare? Oppure eseguire un programma specifico sullo sfondo del server che registra ogni file modificato mentre viene modificato? Se c'è un comando che usa PHP per farlo, sto bene, posso creare un cron per eseguire uno script PHP, nessun problema.

+0

Se find non funziona, probabilmente IO è il collo di bottiglia, quindi è irrilevante se si utilizza 'find' o qualche altro metodo per determinare il mtime dei file. Concentrati su un metodo per migliorare il tuo IO. – Ctx

+0

Che cosa si sta scrivendo sui file? Si può fare lì? – Martin

+1

Usa 'incrontab'. Funziona come normale 'crontab' tranne che sugli eventi di file (come una modifica): http://manpages.ubuntu.com/manpages/intrepid/man5/incrontab.5.html –

risposta

2

Esiste un'utilità Linux chiamata incron che può essere utilizzata in modo simile al normale cron, ma piuttosto che gli eventi basati sul tempo, funzionano fuori da inotify e vengono generati da eventi di file.

È possibile trovare la pagina man di Ubuntu qui: http://manpages.ubuntu.com/manpages/intrepid/man5/incrontab.5.html

Io personalmente non ho dovuto usarlo per qualcosa di troppo complesso, ma va più o meno così:

Installarlo:

sudo apt-get install incron 

Aprire l'editor per aggiungere una voce:

incrontab -e 

Metti qualcosa tipo:

/var/www/myfolder IN_MODIFY curl https://www.example.com/api/file-updated/$# 

La prima parte è il file o la cartella da guardare. La seconda parte è l'evento. E la terza parte è il comando.

I penso che $# è il segnaposto per il file in questione.

+0

Sei fantastico! :) – Samul

+0

Heh, felice di aver potuto aiutare :-) –

+0

Questo è davvero interessante. Grazie. –

Problemi correlati