はじめに
cronを実行したログを、ログファイルに出力する設定を行った。
環境
Ubuntu 16.04.5 LTS
手順
このファイルを開く。
vi /etc/rsyslog.d/50-default.conf
デフォルトで、この行がコメントになっている筈なので、コメントを外して更新する。
cron.* /var/log/cron.log
しかし、ReadOnlyになっていたため更新ができず。書き込みできるように、パーミッションを変更する。
sudo chmod 646 /etc/rsyslog.d/50-default.conf
(変更前) -rw-r--r--
(変更後) -rw-r--rw-
cronのログは、rsyslogで出力する仕組みになっている。上記の設定を有効にするために、rsyslogのサービスを再起動する必要がある。
service rsyslog restart
サービスが起動されている事を念のために確認しておく。
service --status-all | grep rsyslog
ログはここに出力されるようになります。cronのログを、rsyslogが、書き込んでくれます。最初のログが、cron.logに書き込まれるタイミングで、cron.logが新規作成されます。
/var/log/cron.log
参考
cronのログを、rsyslogで書き出すのではなく、cronで実行されたコマンドを、標準出力したログにする
crontab -eで、下記の2行を追加する。
1 12 * * * cd $HOME && date "+\%Y/\%m/\%d \%H:\%M:\%S" >> ./syori01.log
2 12 * * * cd $HOME && /usr/local/rbenv/shims/ruby syori01.rb >> ./syori01.log
解説
12時01分に、システム日付と時間を、syori01.logに書き込み、続けて、12時02分に、syori01.rbというrubyのブログラムを実行して、syori01.logに標準出力します。注意点は、cronに日付を指定する場合、%をエスケープしないと上手くいなかいという点です。
・rubyが入っている場所は、which rubyをして見つけます。
・当処理は、Homeディレクトリで実行しています。
参考