はじめに
cronの実行結果を確認しようとcron.logを探しに行ってそれらが存在しない場合の流れについて記載しました。
結論から言えば同様のメッセージは/var/log/syslogに格納されています。
コマンド実行環境
- Debian GNU/Linux 9 (stretch)
syslogでログを管理している
以下の記事にてsyslogの扱い方について触れています。syslogとは?という方は先に一読ください。
/var/log/cron.logがない場合は二つの可能性があります。
一つは、syslogの設定ファイルにてcron.logとcronのログを切り出す設定が入っていない場合。もう一つは出力先を明示的に変更している場合です。
設定ファイルは/etc/rsyslog.confに存在しているので試しにcronに関する記載を見てみてください。おそらく以下のようにコメントアウトされています。これは一つ目の場合です。二つ目の場合であれば以下の/var/log/cron.logに別のパスが書かれています。
$ cat /etc/rsyslog.conf | grep cron #cron.* /var/log/cron.log ...
上の内容は「cronというファシリティの全てのプライオリティのログを/var/log/cron.logに吐かせる」という設定がコメントアウトされています。
ではコメントアウトされていた場合に過去のログは存在しないのでしょうか?
冒頭で述べたように/var/log/syslogに出力されています。
試しにcronで実行されているスクリプトをキーにsyslogファイルの中身を検索してみてください。
... instance-1 CRON[13952]: (root) CMD (/root/everyminute.sh) ... instance-1 CRON[13983]: (root) CMD (/root/everyminute.sh)
といったようにCRONに関するログが出力されています。
/var/log/cron.logに出力させたい場合
これらを抜き出して/var/log/cron.logに出力させるためには先ほどのコメントアウトを外して
cron.* /var/log/cron.log
とします。
編集後はsyslogの再起動を以下コマンドで行い
$ /etc/init.d/rsyslog restart [ ok ] Restarting rsyslog (via systemctl): rsyslog.service.
cronの実行時刻後に見に行くと以下のようにファイルができています。
$ cat /var/log/cron.log ...
終わりに
本記事のポイントは「rsyslog.conf」のコメントを外してからログが出力されるのではなく、sysglogに吐き出されている数々のログから確認しやすくするようにログを別ファイルとして保存するために「rsyslog.conf」のコメントを外すという点です。
以上、ご参考になれば幸いです。