crondtab定时任务%字符无法识别的处理

一、背景
1.使用crond的定时任务时 , 编辑了以下的语句 , 每天0点执行定时任务
crontab -eservice crond restart0 0 * * * sh /root/backup/compress_backup.sh 2>&1 > /root/backup/log_`echo $(date  +%Y-%m-%d)`2.查看定时任务的执行 , 语句没有顺利执行 , 出现问题
tail -5 /var/log/cron

crondtab定时任务%字符无法识别的处理

文章插图
3.本地执行命令是正常的
sh compress_backup.sh  > /root/backup/log_`echo $(date  +%Y-%m-%d)`
crondtab定时任务%字符无法识别的处理

文章插图
 二、问题原因
在crontab中%字符被认为是换行 , 所以你的命令中有%时 , 需要在crontab中要加\转义
另外注意sh执行的脚本需要写绝对路径 , 否则也无法正确的执行
三、解决方案
 在crontab中要加\转义
crontab -eservice crond restart0 0 * * * sh /root/backup/compress_backup.sh 2>&1 > /root/backup/log_$(date +\%Y-\%m-\%d)重启查看定时任务的执行 , 语句正常
tail -5 /var/log/cron
crondtab定时任务%字符无法识别的处理

文章插图
查看文件备份成功且日志正确生成
crondtab定时任务%字符无法识别的处理

文章插图
【crondtab定时任务%字符无法识别的处理】

    经验总结扩展阅读