come mettere un trigger su una directory


25

Ho uno script che analizza una directory e fa un po 'di manutenzione sui file in essa contenuti. Un altro processo crea i file nella directory (10-30 file al giorno).

Lo script viene chiamato tramite un cron job giornaliero. Ciò di cui ho bisogno è innescare lo script su un evento (ogni volta che viene creato un nuovo file nella directory). Preferisco questo piuttosto che aumentare la frequenza del cron job.

Come lo posso fare? c'è un comando o un programma da installare?

Grazie in anticipo per qualsiasi aiuto.

Risposte:


23

inoticoming

inoticoming è un demone per guardare una directory con il framework inotify di Linux e innescare azioni una volta inseriti file con nomi specifici.

Ad esempio, può essere utilizzato per attendere che i file .changes vengano caricati in una directory e chiamare reprepro per metterli nel proprio repository.

incron

incron è un sistema "inotify cron". Funziona come il normale cron ma è guidato da eventi del filesystem invece che da eventi temporali. Questo pacchetto fornisce due programmi, un demone chiamato "incrond" (analogo a crond) e un manipolatore di tabelle "incrontab" (come "crontab").

incron usa il kernel Linux inotify syscalls.

come cron, ogni utente può modificare le proprie tabelle incron.


2
Potresti fornire un esempio? Anche i collegamenti alle pagine di manuale sono i benvenuti, non sono riuscito a trovare quello per incron, inoticomingquello è qui .
Lekensteyn,

Per incron vedi le manpage di incrond, incrontab e incron.conf
Florian Diesch,

2
Ho modificato la tua risposta come volevo vederla. L'ho copiato dalle descrizioni dei pacchetti, per favore sii così esteso in futuro quando
nominerai i

4

C'è anche un piccolo programma chiamato iwatch- vedi la pagina man (questa pagina è per Ubuntu precise (12.04), ha collegamenti ad altre versioni di Ubuntu).

iwatch ha la capacità di guardare le cartelle in modo ricorsivo (es. anche sottocartelle) e di inviare e-mail in risposta a eventi di file / directory.


3

Un'altra utilità da sapere è fileschanged( pagina man qui ), che può monitorare l'evento del filesystem su file o directory selezionati, ad esempio il seguente comando

fileschanged -s created -t1 $PWD

dovrebbe monitorare la directory corrente per gli eventi di creazione del file, scrivendo il nome del file creato stdoutcon un timeout di 1 secondo.

fileschangedpuò guardare le cartelle in modo ricorsivo (come iwatchindicato in un'altra risposta), diversamente da incrone inoticoming.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.