インフラエンジニアbacchiのわかったことまとめ

bacchi.me

Linux Mac

crontabでは「%」をエスケープしなければならない

更新日:

crontabでは「%」をエスケープしなければならない

タイトルそのまんまですが、少し悩まされたのでメモ。

crontabに以下のようなタスクを仕込み、実行してみたところ失敗してしまいました。

手動で実行すると期待通りの動作をする。

/var/log/cronを見てみると、以下のようなログが吐かれていました。

コマンドの実行が中途半端なところで止まっている・・

以下のコマンドを実行し、manでcrontabのファイルフォーマットの説明を見てみた。

「第 6」フィールド (行の残りの部分) には実行されるコマンドを指定する。 その行のコマンド部 (改行文字または % 文字まで) が /bin/sh (またはその crontab ファイルの SHELL 環境変数で指定されたシェル) によって実行される。
コマンド中にパーセント記号 (%) が バックスラッシュ () によってエスケープされずに置かれていると、改行文字に置き換えられ、最初に現れた % 以降の全てのデータは 標準入力としてコマンドに送られる。
シェルの行末の "" のような、 コマンドの単一の行を複数行に分割して記述する方法は、crontab にはない。

%はコマンドの終端として処理されるようです。

%をバックスラッシュ「」でエスケープすれば%以降のデータは標準入力としてコマンドに送られるとのことなので、そのとおりにやってみたらOKでした。

自信満々で仕込んだcronが動かないとかなり焦りますねー。

Sponsor Link

スポンサーリンク

Sponsor Link

スポンサーリンク

-Linux, Mac

Copyright© bacchi.me , 2018 AllRights Reserved.