Мы используем upstart для управления нашими услугами на наших серверах Ubuntu. Они создают журналы, которые вышли из /var/log/upstart/SERVICE_NAME.log
Затем ежедневно файлы журналов чередуются с помощью сценария logrotation, который поставляется с 12.04 LTS:
/var/log/upstart/*.log {
daily
missingok
rotate 7
compress
notifempty
nocreate
}
Проблема заключается в том, что, хотя logrotate перемещает файлы, он не выдает сигнал на запуск для закрытия и повторного открытия файлов, оставляя процесс запуска на запись в PID для удаления.
init 1 root 8w REG 202,1 64 2431 /var/log/upstart/dbus.log.1 (deleted)
init 1 root 13w REG 202,1 95 2507 /var/log/upstart/acpid.log.1 (deleted)
init 1 root 14w REG 202,1 127 17377 /var/log/upstart/whoopsie.log.1 (deleted)
init 1 root 36w REG 202,1 122 6747 /var/log/upstart/SERVICE_NAME.log.1 (deleted)
init 1 root 37w REG 202,1 30 6762
Очевидно, что я мог перенаправить вывод из моих собственных служб в другие файлы журналов, но проблема все еще будет присутствовать для системных процессов. Также я бы предпочел не создавать больше инфраструктуры, чем мне нужно.
nocreate
директивы, я не уверен, почему кто-то будет использовать эту директиву, особенно для сервисов, которые потенциально могут записать много выходных данных