可能的重复:
如何date
在 cron 选项卡作业中执行?
我做了一个定时任务,在每周五下午 23 点到午夜之间录制一段直播。只是不知何故,这似乎不起作用。
cronjob 是
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 变量中指定的 shell 执行。命令中的百分号 (%),除非用反斜杠 (\) 转义,否则将更改为换行符,并且第一个 % 之后的所有数据都将作为标准输入发送到命令。
反斜杠你的百分号!