Como posso parar um inotifywait em execução de outro script?

0

Eu tenho um script que inicia uma sessão perpétua de inotifywait (usando a opção -m) que monitora um diretório que está aguardando a entrada de arquivos de backup e, em seguida, os move para outro diretório onde eles possam ser gerenciados. Esse script é assim:

dir=/home/userid/drop/
target=/home/userid/current/

inotifywait -m "$dir" --format '%w%f' -e create |
    while read file; do
        mv "$file" "$target"
        find /home/userid/current -maxdepth 1 -type f -name "*.sql.gz" -print0 | xargs -r0 ls -t | tail -n +5 | tr '\n' '
dir=/home/userid/drop/
target=/home/userid/current/

inotifywait -m "$dir" --format '%w%f' -e create |
    while read file; do
        mv "$file" "$target"
        find /home/userid/current -maxdepth 1 -type f -name "*.sql.gz" -print0 | xargs -r0 ls -t | tail -n +5 | tr '\n' '%pre%' | xargs -r0 rm

    done
' | xargs -r0 rm done

O script acima move os arquivos assim que eles são soltos e, em seguida, limpa o diretório de destino para os últimos 4 arquivos. Isso funciona muito bem e pode ser configurado para iniciar a partir de uma entrada crontab em torno de 1:30 da manhã.

No entanto, 23 horas e 45 minutos depois, eu preciso ser capaz de encerrar o processo perpétuo de inotifywait e executar alguma outra manutenção antes de permitir que ele reinicie novamente. Então, eu gostaria de poder ter outra entrada do crontab que chame outro script para encerrar o processo de execução do inotify, execute a outra manutenção e, em seguida, saia. Isso permitiria que a primeira entrada do crontab reinicie o monitoramento do diretório.

Eu preciso disso para que todos sejam executados sem supervisão, sem precisar estar logado em uma sessão de terminal. Isso é possível? Em caso afirmativo, qual comando eu usaria no script de manutenção para interromper a sessão inotifywait iniciada pelo outro script?

Qualquer orientação será muito apreciada.

    
por BKM 17.08.2018 / 22:56

0 respostas