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中要加\轉義
【crondtab定時任務%字符無法識別的處理】另外注意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定時任務%字符無法識別的處理

文章插圖

    推薦閱讀