以下工作按预期工作:
date +'%d-%b-%Y-%H-%M' 28-Sep-2009-14-28
但是crontab中的以下4个条目都没有工作.
* * * * * date +\'%d-%b-%Y-%H-%M\' >> /backup/shantanu/testing.txt * * * * * date +'%d-%b-%Y-%H-%M' >> /backup/shantanu/testing1.txt * * * * * date +"%d-%b-%Y-%H-%M" >> /backup/shantanu/testing2.txt * * * * * date +\"%d-%b-%Y-%H-%M\" >> /backup/shantanu/testing3.txt
Error: /bin/sh: -c: line 0: unexpected EOF while looking for matching `"' /bin/sh: -c: line 1: syntax error: unexpected end of file
我可以在shell脚本中保存相同的代码并设置cron,但我想知道是否可以直接为任务设置cron.
我试图设置的实际cron条目看起来像这样......
16 * * * * mysqldump myDB myTB > /backup/ABCbc$(date +'%d-%b-%Y-%H-%M').sql 2> /backup/ABCbc_errORS$(date +'%d-%b-%Y-%H-%M').txt
Gil*_*il' 21
与直接键入交互式shell的命令相比,cron作业命令的行为有四种常见原因:
$PATH和其他预期的变量缺失./bin/sh默认调用,而您可能以交互方式使用其他shell.%特别对待角色(它在命令中变成了换行符).您必须在crontab文件中%使用a 前面的所有字符\,这告诉cron只需%在命令中添加一个,例如
16 * * * * mysqldump myDB myTB > "/backup/ABCbc$(date +'\%d-\%b-\%Y-\%H-\%M').sql" 2> "/backup/ABCbc_errORS$(date +'\%d-\%b-\%Y-\%H-\%M').txt"
(作为一个单独的问题,总是在a "$variable_substitution"或a 周围加上双引号"$(command substitution)",除非你知道为什么不在特定情况下这样做.否则,如果变量内容或命令输出包含空格,或者?*\[它们将由shell解释.)