如下crontab命令
30 8-23/1 * * * /bin/ping -c 4 www.baidu.com >> /var/ftp/$(date "+%Y-%m-%d").log
作用即在8点30分到23点30分,每隔一小时,就ping
4次www.baidu.com
,并把输出内容追加到/var/ftp
目录下的,年-月-日.log
文件中。
但是发现,此命令总是报错,发送到邮箱的报错日志如下
/bin/sh: -c: line 0: unexpected EOF while looking for matching `"’
/bin/sh: -c: line 1: syntax error: unexpected end of file
应该是符号问题,所以我把
/bin/ping -c 4 www.baidu.com >> /var/ftp/$(date "+%Y-%m-%d").log
命令直接复制在控制台运行,发现能正常运行,这就奇怪了。
最终终于找到bug,凶手就是%
在crontab中,%是关键字,普通使用时,要用\进行转义,所以正确的写法如下
30 8-23/1 * * * /bin/ping -c 4 www.baidu.com >> /var/ftp/$(date "+\%Y-\%m-\%d").log