(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Linux】crontabにて%を付与したコマンド実行がエラーとなる

スポンサーリンク

事象

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に引き渡す動きとなるので、冒頭のように%が入ったコマンド実行には注意が必要です。

以上です。


他の記事を読む