/var/log/messages にこんなエラーが出力されていた。
logrotate: ALERT exited abnormally with [1]
つい最近/var/log/ディレクトリを別パーティションに引越ししたので、それが原因かなぁとか思っていたのですが、原因は他にありました。
解決に至る前に確認させていただいたサイトはこちら
上記サイトをみて思い出した logrotate -vd を用いたデバッグを行ってみた。
logrotate -vdを用いたデバッグ
logrotate -vd は、指定された設定ファイルを元に実際に実行した時どうなるのかを検証してくれるもの。実際にログファイルが操作されることはないので、不要にログがローテートとされてしまう心配もない。一般的に、logrotateの設定を追加したときや、今回のように問題が発生した時によく使われる。
logrotate -vd の出力はすべて 標準エラー として出力されます。
今回は、logrotate -vdの実行結果である標準エラーを「|」(パイプ)を通してgrepに渡しています。「grep ^error」は、行頭に「error」があるものを表示してくれます。「コマンドA |& コマンドB」はコマンドAの実行結果として得られる標準出力(標準エラーも)をコマンドBに渡します。これは、「コマンドA 2>&1 | コマンドB」と同じです。標準出力や標準エラー、1、2に関してはこちらからbashのマニュアルを読むと理解できるかと思います(追加でのネット検索も必要かも)。
説明が長くなってしまいましたが、以下の通りコマンドを実行し、結果から「error」を行頭に含むものを表示してみます。
# /usr/sbin/logrotate -vd /etc/logrotate.conf |& grep ^error error: roundcubemail:3 unknown option 'su' -- ignoring line error: roundcubemail:3 unexpected text error: samba:7 error verifying olddir path /var/log/samba/old: そのようなファイルやディレクトリはありません error: found error in file samba, skipping #
上記には2つのエラーが隠れています。
1つ目は、私がインストールしているRoundCubeMailの以下のエラー
error: roundcubemail:3 unknown option 'su' -- ignoring line error: roundcubemail:3 unexpected text
こちらの「ignoring line」とあるとおり、無視されているので、大きな問題ではないです。
このエラーに関してはこちらの記事で解説しておきます。
2つ目は、sambaのログローテーションの際に出力されています。
error: samba:7 error verifying olddir path /var/log/samba/old: そのようなファイルやディレクトリはありません error: found error in file samba, skipping
今回の原因はこの2つ目のエラーでした。
error: samba:7 error verifying olddir path /var/log/samba/old: そのようなファイルやディレクトリはありません
/etc/logrotate.d/の7行目で指定されている「olddir」のパス「/var/log/samba/old」がないと言っています。
冒頭で「つい最近/var/log/ディレクトリを別パーティションに引越しした」と書きましたが、引越しするにいたった原因はsambaのログ出力とログ管理が不十分だったため、ログファイルが肥大したのが問題でした。そのときに「rm -rf /var/log/samba/*」をしたので、oldディレクトリも削除してしまっていたのが原因でした。
/var/log/samba/old ディレクトリを以下の通り作成し、問題解決です。
# mkdir /var/log/samba/old
以上
コメント