У меня есть простой скрипт, который ведет журнал в файл журнала. Это ядро моего скрипта:
with open('/var/log/mail/mail.log', 'a', buffering=1) as f:
for line in sys.stdin:
f.write(line)
Записываемый файл /var/log/mail/mail.log
должен регулярно обновляться на logrotate
. В настоящий момент, когда logrotate
поворачивает файл, мой сценарий не осознает этого и продолжает запись в старый (теперь переименованный) файл.
logrotate
имеет возможность выполнить команду после того, как файл был повернут. Обычно, когда rsyslog
регистрируется, команда будет выглядеть так:
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
Но в моем случае мне нужно отправить некоторый сигнал в мой скрипт и обработать сигнал в моем скрипте.
Кроме того, я не знаю заранее, PID
мой скрипт работает как.
Как мне лучше всего это реализовать?