昔、遭遇した気もするが、また忘れていたのでメモ。多分、常識の範疇w
crontabにこんな感じで設定を仕込もうとしたんですね。
*/5 * * * * /usr/bin/iotop -b -k -t -n 2 -o >> /var/log/iotop/"`hostname`_`date '+%F_%H'`"
すると、「メールが /var/spool/mail/root にあります」とメールが届きまして、、、
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``' /bin/sh: -c: line 1: syntax error: unexpected end of file
こんな感じで怒られたわけです。
あんれー?と思って、"/var/log/cron"を確認すると、
CROND[17743]: (root) CMD (/usr/bin/iotop -b -k -t -n 1 -o >> /var/log/iotop/"`hostname`_`date '+)
と表示されていて、あんれーーー!「%」以降がどっかいっちゃってるー、と気付きました。
んで、まぁ定番の"man 5 crontab"とかすると、ちゃんと答えが書いてあるわけです。。。
「第 6」フィールド (行の残りの部分) には実行されるコマンドを指定する。 その行のコマンド部 (改行文字または % 文字まで) が /bin/sh (またはその crontab ファイルの SHELL 環境変数で指定されたシェル) によって実行される。 コマンド中にパーセント記号 (%) が バックスラッシュ (\) によってエスケープされずに置かれていると、 改行文字に置き換えられ、最初に現れた % 以降の全てのデータは 標準入力としてコマンドに送られる。
Man page of CRONTAB
・・・ということで、
*/5 * * * * /usr/bin/iotop -b -k -t -n 2 -o >> /var/log/iotop/"`hostname`_`date '+\%F_\%H'`"
こんな感じで、crontabでの「%」記述は必要に応じてエスケープしましょうというログでした・・・。
それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́
プロのための Linuxシステム・10年効く技術 (Software Design plus)
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2012/06/15
- メディア: 大型本
- 購入: 6人 クリック: 88回
- この商品を含むブログ (16件) を見る