事象
crontabに以下のような記載をした場合に
# crontab -l * * * * * curl test.com -o /dev/null -w '%{http_code}\n' -s
cronログにはエラーとして出力される。
/bin/sh: -c: line 0: unexpected EOF while looking for matching `'' /bin/sh: -c: line 1: syntax error: unexpected end of file
環境情報
- Red Hat Enterprise Linux Server 7.9
原因/解決策
コマンド部分の%
までが第六フィールドとして認識されてしまい、コマンドが切れてしまっている。
よってエスケープのためにバックスラッシュ(\)を付与することで正常に実行される。
# crontab -l * * * * * curl test.com -o /dev/null -w '\%{http_code}\n' -s
以下、補足です。
補足
crontabのマニュアルにも記載がありますが、コマンドフィールドにて指定された実行コマンドは改行文字または%文字を/bin/sh
に引き渡す動きとなるので、冒頭のように%が入ったコマンド実行には注意が必要です。
以上です。