0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log
不幸的是,我在运行时收到此消息:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
我曾尝试以各种方式将
date
的部分转义,但运气不佳。是否可以在crontab文件中以串联方式进行此操作,还是需要创建Shell脚本来执行此操作?#1 楼
简短答案:将
%
转换为\%
:0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+\%d"`.log
长答案:
错误消息表明执行命令的shell看不到第二个反勾字符:其他答案:
/bin/sh: -c: line 0: unexpected EOF while looking for matching '`'
crontab联机帮助页确认命令仅在第一个未转义的
%
符号之前是只读的:“第六个”字段(该行的其余部分)指定要运行的命令。该行的整个命令部分,直到换行符或
%
字符,将由/bin/sh
或cronfile的SHELL
变量中指定的shell执行。除非使用反斜杠(%
)进行转义,否则命令中的百分号(
\
)将被更改为换行符,并且第一个
%
之后的所有数据都将发送到该命令作为标准输入。评论
对不起,很抱歉,但是您在哪里看到此错误消息?当我执行'grep CRON / var / log / syslog'时,尽管cron失败,但没有看到任何错误消息-kagda.ru/i/9a016249a39_20-05-2015-09:22:47_9a01.png
–特比
15年5月20日在6:24
@Копать_Шо_я_нашелcron将发送带有错误消息的电子邮件,
–詹森
16年1月1日,下午6:50
日期+ \%Y \ \%m \ \%d \ \%H:\%M:\%S-cronlog
– DevilCode
16年4月4日在13:36
#2 楼
如果要将日期格式设置的字符串作为变量(以避免重复整个字符串),请不要转义%
并将其放在$()
中例如,在声明字符串时,只需写:
DATEVAR=date +%Y%m%d_%H%M%S
然后,用
$($VARIABLE_NAME)
编写cron语句,就像这样:她/他在ServerFault上的回答可能更加完整:评论
DATEVAR =“日期+%Y%m%d_%H%M%S”
–坦率的芳
19年8月3日在8:45
#3 楼
您还可以将命令放入外壳文件中,然后使用cron执行外壳文件。jobs.sh
echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log
cron
0 * * * * sh jobs.sh
#4 楼
在cron中,您可以使用以下简单语法:*/15 01-09 * * * sh /script.sh >> /home/username/cron_$(date -d"-0 days" +\%Y\%m\%d).log 2>&1
评论
输出日期格式将像cron 20180123.log一样返回
–ball4training
18年1月24日在13:51
(1)您说的是尚未接受的答案? (2)您的答案比问题复杂得多。例如,您添加了-d选项,该选项未在问题中使用(并且未进行解释)。您如何称呼这种“简单语法”合理?
– G-Man说“恢复莫妮卡”
18/12/23在6:27
#5 楼
以上所有答案均使用双引号(并非所有设置都适用于我的设置)。这对我有用:0 5 * * 3 /data/script.sh > /data/script_`date +\%y\%m\%d`.log 2>&1
评论
您说的是尚未接受的答案?您是说不带引号比带引号更有效吗? (提示:这不太可能。)
– G-Man说“恢复莫妮卡”
18/12/23在6:27
接受的答案对我根本不起作用。这一个。
– Manuel Schmitzberger
18/12/23在8:44
#6 楼
基本解决方案:使用
$()
执行date
命令并将输出datetime格式化为UTC,用
%
转义\
字符添加
2>&1
最后将stdout
和stderr
都流式传输到该日志文件中示例:
* * * * * echo "Test crontab log" > /tmp/crontab.log.$(date --utc +\%Y\%m\%d_\%H\%M\%SZ) 2>&1
输出:
ls -lh /tmp | grep log
-rw-rw-r-- 1 ubuntu ubuntu 17 May 4 05:06 crontab.log.20190504_050601Z
-rw-rw-r-- 1 ubuntu ubuntu 17 May 4 05:07 crontab.log.20190504_050701Z
评论
在搜索之前,我浪费了一个小时的时间!我从来没有想到任何需要逃避的东西。