crontabの記述でdateコマンドを使う場合の注意 [UN*X]
軽くハマったのでメモ。
crontabで定期的にコマンドを実行したときに出力されたものをログとして書き出すときに、ファイル名のサフィックスとして日時をつけることで簡易ログローテーションさせたいというケースがある。
だが、以下の記述はうまくいかない。
これは%がcrontabでは特別な意味を持つ文字だからだ。
詳しくはman 5 crontabで。
%はバックスラッシュでエスケープすることで記述することができる。
crontabで定期的にコマンドを実行したときに出力されたものをログとして書き出すときに、ファイル名のサフィックスとして日時をつけることで簡易ログローテーションさせたいというケースがある。
だが、以下の記述はうまくいかない。
0 0 * * * /usr/local/bin/hogehoge > /var/log/hoge/log.`date +%Y%m%d` 2>&1
これは%がcrontabでは特別な意味を持つ文字だからだ。
詳しくはman 5 crontabで。
%はバックスラッシュでエスケープすることで記述することができる。
0 0 * * * /usr/local/bin/hogehoge > /var/log/hoge/log.`date +\%Y\%m\%d` 2>&1