Gostaria de saber se posso escrever um script que monitore uma alteração em um arquivo e execute alguma ação quando a alteração for detectada.
Explicação detalhada:
- O OpenVPN grava seu status em um arquivo a cada 1 minuto.
- Preciso analisar esse arquivo de status e tomar uma ação.
- O OpenVPN trunca o arquivo de status antes de gravá-lo.
- Tentei gravar em um pipe nomeado, mas recebo erros indesejáveis (mas não fatais) no aplicativo quando ele falha ao truncar o pipe.
linux
bash
openvpn
shell-scripting
davidparks21
fonte
fonte
tail -f
provavelmente é a maneira mais fácil. Mas apenas para anexar.Respostas:
Cheap n 'maneira suja:
Faça um loop
stat -c %Y file
e execute uma ação quando a hora da modificação mudar.Provavelmente melhor:
Use o serviço inotify cron para observar eventos de modificação de arquivo e executar sua ação:
fonte
Dê uma olhada no incron [1] ou outro material inotify para acionar a execução do seu script.
[1] http://inotify.aiken.cz/?section=incron&page=about&lang=en
fonte
inotify seria o caminho certo para fazê-lo. Tutoriais são fornecidos em algumas edições da revista LinuxForYou para esta pergunta.
fonte
Então, tenha um script que:
1) Verifica o tempo de modificação no arquivo (com stat)
2) Se o tempo de modificação é mais recente do que quando foi verificado pela última vez, ele foi alterado
3) Analise e execute sua ação
4) Depois, durma por 1 minuto e, em seguida, refaça
fonte
Maneira rápida e suja:
fonte