私はDigital Ocean VPSでUbuntu 14.04 LTSとnginxを実行しています。
トピック
cron test -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.
答え1
回転後の作業が間違っているようです。
努力する
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.
したがって、リロードが機能し、HUP信号をnginxに送信してログファイルを強制的に再開する必要があります。
答え2
他の回答で述べたように、問題はタスクがサポートされていないというinvoke-rc.d nginx rotate
エラーが返されることです。rotate
興味深いことに、service nginx rotate
問題なく実行されました。
invoke-rc.d
私の考えでは、ラッパーは実際のnginx initスクリプトでサポートされているすべての操作をサポートしていないようです。
invoke-rc.d nginx rotate
に変更するとservice nginx rotate
問題が解決します。
答え3
initctl
オプションがサポートされていないため削除されたかどうかはわかりませんが、rotate
これが影響を受ける唯一の人ではなく、Launchpadにこの問題に関する一般的なバグレポートがあります。
上記と他の答えで述べたように、nignx logrotateファイルを編集して問題のある行を置き換えることができます
invoke-rc.d nginx reload >/dev/null 2>&1
他の有効な代替案を使用すると、
start-stop-daemon --stop --signal USR1 --quiet --pidfile /run/nginx.pid --name nginx
# or
service nginx rotate >/dev/null 2>&1
# or
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
どの方法を選択しても、パッケージが管理するファイルを変更していることに注意してください。ファイルを変更した後は更新されなくなり、違いを手動で解決するか、新しいファイルに置き換える必要があります(つまり、修正を含める準備ができています)。
答え4
変える:
invoke-rc.d nginx reload >/dev/null 2>&1
そして:
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
最新バージョンのNginxではこれがうまくいくようです。バージョン 1.9 を実行しています。