Я использую Ubuntu 14.04 LTS и nginx на VPS Digital Ocean, и время от времени получаю сообщения о неудачной работе cron:
Тема
Тест Cron -x / usr / sbin / anacron || (cd / && run-parts --report /etc/cron.daily)
Тело письма:
/etc/cron.daily/logrotate: ошибка: ошибка при запуске общего сценария postrotate для /var/log/nginx/*.log частей выполнения: /etc/cron.daily/logrotate завершена с кодом возврата 1
Любые мысли о том, как я могу решить это?
Обновить:
/var/log/nginx/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Обновить:
$ sudo invoke-rc.d nginx rotate
initctl: invalid command: rotate
Try `initctl --help' for more information.
/etc/logrotate.d/nginix
скриптinvoke-rc.d nginx rotate
получается, попробуйте запустить его от имени соответствующего пользователя и покажите нам этот сценарий, вставьте вывод в исходный вопрос. ТКС.Ответы:
Действие после поворота кажется неправильным
Пытаться
Если вы посмотрите на
nginx
команду, вы увидите действия, которые она примет. Также сообщение, которое вы получили, говорит, что проверкаinitctl --help
поэтому перезагрузка должна работать и отправлять сигнал HUP на nginx, чтобы принудительно открыть файлы журнала.
источник
Как уже упоминалось в другом ответе, проблема заключается в том, что
invoke-rc.d nginx rotate
возвращается ошибка о том, чтоrotate
действие не поддерживается. Интересно то, чтоservice nginx rotate
работает без проблем.Я предполагаю, что
invoke-rc.d
оболочка не поддерживает все действия, которые поддерживает настоящий скрипт инициализации nginx.Переход
invoke-rc.d nginx rotate
наservice nginx rotate
должен решить проблему.источник
Я не уверен, что это потому, что
initctl
доза не поддерживает этуrotate
опцию и когда она была удалена, но вы не единственные, кого это затронуло, и на панели запуска есть открытый отчет об ошибке.Как упоминалось в других ответах выше и ниже, вы можете отредактировать файл nignx logrotate и заменить проблемную строку
с другими альтернативами, которые работают,
Какой бы метод вы ни выбрали, помните, что вы не изменяете файл, который управляется пакетом, и после его изменения он больше не будет обновляться, и вам придется вручную разрешать diff или перезаписывать его новый (который все готово включать исправление).
источник
Работал для меня:
Заменено
postrotate invoke-rc.d nginx rotate >/dev/null 2>&1
С
postrotate service nginx rotate >/dev/null 2>&1
источник
Заменить:
С:
Кажется, на более новых версиях Nginx это работает. Я использую 1.9 версии.
источник