2つの異なる(i386 v AMD)Debianボックスがあり、同じ問題があります。 logrotateはログを自動的にローテーションしません。私が手動でそれを強制すると、それはうまくいきます
/usr/sbin/logrotate -f /etc/logrotate.conf
しかし、それは私には大丈夫ではありません。
設定は変更されていません(少なくとも私は変更していません)。AMDボックスはフレッシュインストールですが、うまくいきません。
同様の問題に気づいた場合は、私を助けてください。
更新(一部のサーバー出力):
logrotate -d
http://Pastebin.com/e6AshtGq
ls -l /var/log
http://Pastebin.com/Y2A4Li59
cat /etc/logrotate.conf
http://Pastebin.com/1h7Uwctr
ls -l /etc/logrotate.d
http://Pastebin.com/NvUAeszM
Logrotateがcronによって実行されていることを確認してください。
編集:
コメントの議論から-cronが正しく機能していないようです。 ユーザーなしでcrontabにcronjobがありましたが、cronデーモンを再起動したときにのみ明らかになります
私のubuntuおよびcentosシステムには/etc/cron.daily/logrotate
ファイルの内容
#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
/ etc/crontabには、毎日のジョブを実行する次の行があります
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily
同様の問題がありましたが、crontab
は機能しており、一部のログディレクトリではlogrotate
は機能しましたが、機能しなかったものもあります。 logrotateを手動で実行しようとすると、いくつかのエラーメッセージが表示されました。
user@server:/var/log/Apache2$ Sudo /usr/sbin/logrotate -f /etc/logrotate.conf
error: error creating output file /var/log/Apache2/access.log.1.gz: File exists
error: error creating output file /var/log/Apache2/error.log.1.gz: File exists
...
全ての *.1.gz
ファイルのサイズは0でした。エラーメッセージに記載されているすべてのファイルを手動で削除し、Sudo /usr/sbin/logrotate -f /etc/logrotate.conf
再び、うまくいきました。
この代替ソリューションもここで共有する必要がありますが、これは問題を検索しているときに最初に出てきた検索結果でしたが、提案されたソリューションはうまくいきませんでした。たぶん、これは私と同じ状況にいる他の人にも役立ちます。
分かった分かった。 5歳のスレッド。
それでも検索でかなり高くなる場合は、私が貢献して、発生した問題の解決策を提供します。 logrotateジョブがサーバーの1つで自動的に処理されませんでした。ローテーションの強制はうまくいきました。毎日ローテーションコマンドを手動で実行した後、解決策を思い付きました。
( cd / && run-parts --report /etc/cron.daily )
次に、logrorateジョブの実行を停止するエラーを確認しました。
/etc/cron.daily/logrotate:
error: iptraf-ng:2 duplicate log entry for /var/log/iptraf/*.log
はい、それと同じくらい簡単です。ローテーションする同じログを定義する2つのファイル(iptrafとiptraf-ng)がありました。 iptrafの競合するlogrotate定義の1つを削除するだけでうまくいきました。
rm /etc/logrotate.d/iptraf
別の問題は、失敗した/ etc/crontabファイルである可能性があります。構文が間違っている場合に見つけることができる出力が提供されないため、そのファイルの構文を二重または三重チェックすることを意味します。構文検証に失敗した後、静かに終了します。
これが誰かの時間を節約することを願っています。
競合するログローテーション設定パラメータを確認します!!
私はこの問題に苦労していましたが、ようやくlogrotateに関するドキュメントを非常に詳しく読んだところ、役立つドキュメント here が見つかりました。
SizeパラメータとRotation Intervalパラメータの両方を指定したとき、実際、どちらも欲しかったのです。私は、ローテーションがcronでスケジュールされたとおりに行われるようにしたいと考えていました。
したがって、Rotation IntervalおよびSizeパラメータを削除します。その後、強制せずにlogrotateが呼び出されるたびにローテーションを取得します。
[〜#〜] edit [〜#〜]:これでも完全には機能しません。ログファイルが特定のしきい値を下回っている場合、ログはローテーションされません。したがって、2分ごとにローテーションするcronジョブを実行したときに、ログはローテーションしませんでした。
logrotate -d
を実行すると、詳細なデバッグ情報を確認できます。これは非常に便利なデバッグ情報を提供します。
OK同様の問題がありました。
「ログはローテーションされていませんか?」しかし、logrotateを手動で実行(または/etc/cron.daily
そしてそれはそれらをうまく回転させます。
そのため、cronは毎日「実行されていない」ようです。奇数。そこで、cron そのデータを出力する のログファイルを調べ、その特定の問題の修正について「認証トークンが無効になりました。新しいトークンが必要です」を確認しました。 ここ を参照してください
これは、サービスの変更に伴って頻繁に発生し、logrotateで使用されるオプションが編集されて、logrotateが毎日失敗することを確認しました。
アイデアを与えるために、最後の修正には、Apache logrotateファイルのnotifyemptyオプションが無効になり、logrotateがすべて一緒に停止することが含まれていました。
これはある程度カバーされていますが、これらの問題を追跡するときに私が経験したプロセスを共有したいと思います。
#/usr/sbin/logrotate -f /etc/logrotate.conf
エラーを検索します(例:postfix:3 'missingok')。# vi /etc/logrotate.d/postfix
、問題の原因となっているオプションを削除し、ファイルを保存します。最初のステップで何も出力しない場合もありますが、問題があることがわかります。サービス全体のログファイルがローテーションされていなかったため、このすべてが始まったので、その特定のサービスを探しているlogrotateプロセスを監視して、ローテーションが停止している原因を確認できます。これを行うには、verboseタグをlogrotateコマンドに追加し、そのフォルダーで何が起こるか(ある場合)を確認します。