问题描述
通过crontab 定时执行删除文件的脚本,并把执行脚本的输出重定向到一个含有日期的日志文件中。
结果配置完之后发现定时任务并没有正常执行,该删除的文件都没有删除,但是直接执行脚本并追加日志是可以正常执行的,且能生成日志
[root@gone ~]# crontab -l
*/1 * * * * /cronscripts/cronDelImgAndUpload.sh >> /cronscripts/delete.log.$(date +%Y%m%d) 2>&1
--- 1分钟之后查看生成的日志
[root@gone cronscripts]# ll
total 0
[root@gone ~]# sh cronDelImgAndUpload.sh >> /cronscripts/delete.log.$(date +%Y%m%d) 2>&1
[root@gone cronscripts]# ls
-rw-r--r--. 1 root root 0 Aug 30 10:57 delete.log.20230830
原因
crontab 脚本中 直接写 $(date +%Y%m%d)’
其中的 ‘%
’ 没有转义导致不能被识别从而影响到定时任务对脚本的执行。
正确写法为:$(date +"\%Y\%m\%d")
而不是这样:$(date +%Y%m%d)
修改之后再执行
---修改之后的脚本
[root@gone ~]# crontab -l
*/1 * * * * /cronscripts/cronDelImgAndUpload.sh >> /cronscripts/delete.log$(date +"\%Y\%m\%d") 2>&1
[root@gone cronscripts]# ls
-rw-r--r--. 1 root root 34 Aug 30 11:05 delete.log.20230830