cron で引数のdate の日付指定をして実行すると正常に動作しない

cron を用いて、dateコマンドを用い日付を特定フォーマットに変更した処理を行った際に正常に動作しなかった。

* * * * * /usr/bin/python3 /home/user/test.py $(date --date "+%Y-%m-%d")

date の処理が正常に動いていないことが理由である。 date のフォーマットで指定されている「%」が原因だ

cronのコマンド部分では、%をエスケープする必要する必要がある manual の5章に記載がある

# man 5 crontab

その行のコマンド部(改行文字または % 文字まで)が /bin/sh (またはその crontab ファイルの SHELL 環境変数で指定されたシェル)によって実行される。 コマンド中にパーセント記号 (%) がバックスラッシュ () によってエスケープされずに置かれていると、改行文字に置き換えられ、最初に現れた % 以降の全てのデータは標準入力として>コマンドに送られる。

そのため、%をエスケープし、正常に動作することを確認した。

* * * * * /usr/bin/python3 /home/user/test.py $(date --date "+\%Y-\%m-\%d")