重複の可能性:
date
cronタブジョブを実行するには?
毎週金曜日23時から深夜まで生放送を録画する予約作業を行いました。なんだかこれはうまくいかないようです。
クローンキャッチ
57 22 * * 5 timeout -s SIGINT 66m mplayer -dumpstream http://82.201.100.23:80/slamfm -dumpfile /var/www/HOA-NL/$(date +"%U-%Y").mp3 >> /home/david/HOA-NL-LOG 2>&1
以下は機能しません。
57 22 * * 5 echo "foo" > /home/david/barr
そして、次の方法も機能します。 (タイムアウトエコーは意味がないことを知っています。これは単なる例です。)
57 22 * * 5 timeout -s SIGINT 66m echo "foo" > /home/david/barr
今これがうまくいかない理由を知りたいです。 /home/david/HOA-NL-LOGにエラーやメッセージが表示されません。
答え1
あなたはcronタスクを使用する古典的な間違いを犯しておりdate +%foo
、これはcronの最も混乱した機能につながります。明確に文書化されていますが、man 5 crontab
しばしば見落とされるものは次のとおりです。
行の完全なコマンド部分(改行または%文字まで)は、/ bin / shまたはcrontabファイルのSHELL変数で指定されたシェルによって実行されます。バックスラッシュ(\)でエスケープしない限り、コマンドのパーセント記号(%)は改行文字に変更され、最初の%以降のすべてのデータはコマンドに標準入力として送信されます。
パーセント記号をバックスラッシュ!