como colocar um gatilho em um diretório

23

Eu tenho um script que varre um diretório e faz alguma manutenção nos arquivos nele. Outro processo cria os arquivos no diretório (10 a 30 arquivos por dia).

O script é chamado por meio de um cron job diário. O que eu preciso é acionar o script em um evento (cada vez que um novo arquivo é criado no diretório). Eu prefiro isso em vez de aumentar a frequência do trabalho cron.

Como posso fazer isso? existe um comando ou um programa para instalar?

Agradecemos antecipadamente por qualquer ajuda.

    
por albert green 19.05.2011 / 14:48

4 respostas

20

inoticoming

  

"inoticoming" é um daemon para assistir a um diretório com o framework inotify do Linux e disparar ações assim que arquivos com nomes específicos são colocados lá.

     

Por exemplo, pode ser usado para esperar por arquivos .changes carregados em um diretório e chamar reprepro para colocá-los em seu repositório.

  • Página do manual de "inoticoming"

incron

  

incron é um sistema "inotify cron". Ele funciona como o cron normal, mas é acionado por eventos do sistema de arquivos em vez de eventos de tempo. Este pacote fornece dois programas, um daemon chamado "incrond" (análogo ao crond) e um manipulador de tabelas "incrontab" (como "crontab").

     O

incron usa o syscalls inotify do kernel do Linux.

     

como o cron, cada usuário pode editar suas próprias tabelas incron.

  • Página do manual de incrond
  • Página do manual do incrontab
  • Página do manual do icron.conf
por Florian Diesch 19.05.2011 / 14:52
3

Existe também um pequeno programa chamado iwatch - consulte a página do manual (esta página é para o Ubuntu preciso (12.04), tem links para outras versões do ubuntu).

iwatch tem a capacidade de observar as pastas recursivamente (isto é: subpastas também) e enviar e-mails em resposta a eventos de arquivo / diretório.

    
por drevicko 08.04.2013 / 03:21
2

A página do inotify man está localizada

Se você preferir scripts python, você pode usar pyinotify

    
por Pascal 19.05.2011 / 15:10
2

Outro utilitário que vale a pena conhecer é o fileschanged ( página man aqui ), que pode monitorar o evento do sistema de arquivos em arquivos ou diretórios selecionados, por exemplo, o seguinte comando

fileschanged -s created -t1 $PWD

deve monitorar o diretório atual para eventos de criação de arquivos, gravando o nome do arquivo criado em stdout com um tempo limite de 1 segundo.

fileschanged pode assistir às pastas recursivamente (como pode iwatch , conforme observado em outra resposta), ao contrário de incron e inoticoming .

    
por enzotib 19.05.2011 / 15:59

Tags