Mplayer cronjob 不起作用

0 cron date

可能的重复:
如何date在 cron 选项卡作业中执行?

我做了一个 cronjob 来记录每个星期五晚上 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
Run Code Online (Sandbox Code Playgroud)

这在以下工作时不起作用

57 22 * * 5 echo "foo" > /home/david/barr
Run Code Online (Sandbox Code Playgroud)

并且以下也有效(我知道,超时 echo 没有意义。这只是一个例子)

57 22 * * 5 timeout -s SIGINT 66m echo "foo" > /home/david/barr
Run Code Online (Sandbox Code Playgroud)

现在我想知道为什么这不起作用..它在 /home/david/HOA-NL-LOG 中没有给我错误或消息

Ala*_*rry 8

您犯了date +%foo在 cron 作业中使用的经典错误,导致您遇到了 cron 最令人困惑的功能。清楚地记录在man 5 crontab但经常被忽视的地方,这里是:

该行的整个命令部分,直到换行符或 % 字符,将由 /bin/sh 或由 crontab 文件的 SHELL 变量中指定的 shell 执行。命令中的百分号 (%),除非用反斜杠 (\) 转义,否则将更改为换行符,并且第一个 % 之后的所有数据将作为标准输入发送到命令。

反斜线你的百分号!