Основная проблема в том, что ваш скрипт не может знать, что произошла ротация журнала. Вы могли бы обернуть свой анализатор журналов в дочерний процесс и иметь родительский монитор для просмотра каталогов на наличие новых файлов, но для этого требуются некоторые предположения, а также некоторая сложная логика мониторинга процессов / файлов.
Я обычно предпочитаю механизмы «уведомления», а не механизмы «опроса», поэтому чистым решением этой проблемы было бы то, чтобы механизм ротации журналов перезапускал ваш скрипт при изменении файла. Если вы используете logrotate
и имеете право изменять его конфигурацию, это можно сделать, просто добавив запись postrotate
в соответствующий файл конфигурации:
/path/to/monitored/directory {
...
postrotate
/usr/bin/killall myscript
/path/to/myscript
endscript
}