monitora um diretório com um shell script

3

Estou procurando pelo comando shell como a função inotify do kernel.

Existe um comando que irá monitorar um diretório, que poderia ser usado assim:

while [ 1 ]; do
   name-of-monitor-program . && echo "something changed"
done
    
por Joel 06.10.2013 / 11:16

2 respostas

4

O que você está procurando é incron .

incron e incrontab são inotify cron aplicativos que, em vez de disparar eventos de acordo com a hora, assistem a uma certa pasta / arquivo e disparam scripts / comandos com base no que acontece com essa pasta / arquivo e até interpola o nome desse arquivo / pasta no comando.

Os eventos são explicados aqui: link

Um caso de uso típico seria "observe esta pasta para arquivos recebidos descartados via (S) FTP e transcodifique-os", em vez de ter um cron que seja executado a cada minuto e verifique se há novos arquivos.

Também é importante notar que as classes de desenvolvedor incron como software Alpha. Eu usei em um ambiente de produção antes sem problemas, mas vale a pena considerar.

    
por 06.10.2013 / 11:25
1

Eu encontrei iwatch .

Não sei por que não pensei em fazer apt-cache search inotify antes de fazer essa pergunta.

Foi assim que eu usei:

iwatch -r -c "PATH=$PATH; program-i-wanted-to-run" .

Eu tive que passar a variável de ambiente PATH, porque quando o programa é gerado ele não herda as variáveis de ambiente do shell.

    
por 06.10.2013 / 12:21

Tags