Ubuntu
cron作業上的nginx logrotate錯誤
我在 Digital Ocean VPS 上執行 Ubuntu 14.04 LTS 和 nginx,偶爾會收到這些關於 cron 作業失敗的電子郵件:
學科
cron 測試 -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.daily )
電子郵件的正文是:
/etc/cron.daily/logrotate:錯誤:為“/var/log/nginx/*.log”執行部分執行共享 postrotate 腳本時出錯:/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.
旋轉後操作似乎不正確
嘗試
invoke-rc.d nginx reload >/dev/null 2>&1
如果您查看
nginx
命令,您將看到它將接受的操作。您收到的消息還說檢查initctl --help
xtian@fujiu1404:~/tmp$ initctl help Job commands: start Start job. stop Stop job. restart Restart job. reload Send HUP signal to job. status Query status of job. list List known jobs.
所以重新載入應該可以工作並向 nginx 發送 HUP 信號以強制重新打開日誌文件。
正如另一個答案中提到的,問題在於
invoke-rc.d nginx rotate
返回一個錯誤,指出該rotate
操作不受支持。有趣的是,它service nginx rotate
可以毫無問題地工作。我的猜測是
invoke-rc.d
包裝器不支持實際 nginx 初始化腳本支持的所有操作。更改
invoke-rc.d nginx rotate
為service nginx rotate
應該可以解決問題。