CentOS 6.7ボックスがあり、なんらかの理由で毎日ログをローテーションできない。/var/mail/rootで毎日これに似た電子メールを受け取っています。
To: [email protected]
Content-Type: text/plain; charset="ANSI_X3.4-1968"
Subject: Anacron job 'cron.daily' on server.nl
Message-Id: <[email protected]>
Date: Wed, 9 Mar 2016 03:42:02 +0100 (CET)
/etc/cron.daily/logrotate:
error: error creating unique temp file: Permission denied
logrotate -vf /etc/logrotate.conf
を実行すると、エラーや警告なしにログが期待どおりにローテーションされます。 SELinuxが有効になっているため、アクセス許可拒否エラーの原因である可能性がありますが、/var/log/audit/audit.log
には過去数週間何のエントリもありません。
Logrotateを手動で実行している場合、日中は正常に動作しているのに、夜間にlogrotateが失敗する原因をトラブルシューティングする方法がわかりません。
追加3月10日:Iainのおかげで、(ana)cronが夜間に行っていることのログ出力を取得できました。/tmp/logrotate.out
の最後に次の行があります。
@rotating pattern: /var/log/btmp monthly (1 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/btmp
log does not need rotating
set default create context
error: error creating unique temp file: Permission denied
トラブルシューティングしようとしていたRailsアプリのログ)に関連するエラーではないため、これは私が期待していたものではありませんでした。エラーメッセージ自体に焦点を当てないことで( Googleで韓国語とロシア語でヒットしましたが、実際に発生している問題についてさらに詳しく知りました logrotate cronジョブが特定のログをローテーションしない これは、私が解決しようとしている問題( nginxログはローテーションし、Railsログ)をスキップします。したがって、audit.log
に表示されなかったとしても、結局SELinuxに関連している可能性があります。そこに投稿されたソリューション。
これを試してデバッグするために最初に行うことは、cronが実行するlogrotateスクリプトを変更し、詳細モードでlogrotateを実行させることです。
私のスクリプトの/etc/cron.daily/logrotateにこの行があります
/usr/sbin/logrotate /etc/logrotate.conf
に変更します
/usr/sbin/logrotate -v /etc/logrotate.conf >>/tmp/logrotate.out 2>&1
-s
オプションをlogrotateに追加して、(書き込み可能な)一時ファイルのパスを指定する必要があります。