У меня есть скрипт-демон, который всегда работает в фоновом режиме. Он настроен на передачу stdout и stderr в некоторые файлы журнала как таковые:

python27 etl_daemon.py 1>>/var/log/etl/etl_stdout.log 2>>/var/log/etl/etl_stderr.log

У меня есть настройки logrotate для этих файлов журнала с конфигурацией для каждого в основном:

$ cat /etc/logrotate.d/etl_stdout
/var/log/etl/etl_stdout.log {
daily
rotate 14
compress

logrotate определенно работает с точки зрения архивации и переименования старых журналов, но, похоже, каждый раз, когда он запускается, он запускает мой скрипт и оставляет его запущенным, но больше ничего не делает. Я предполагаю, что это может быть связано с попыткой записи в файл, который теперь переименован, но я не уверен. Идеи? Решения?

1 ответ1

1

Добавьте директиву copytruncate в ваш раздел logrotate. Тогда файл не будет вытащен из-под вашего демона.

Когда вы это сделаете, обязательно напишите в режиме добавления (как в вашем примере), в противном случае вы получите редкие файлы после поворота.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .