crondtab定時任務%字元無法識別的處理
一、背景
1.使用crond的定時任務時,編輯了以下的語句,每天0點執行定時任務
crontab -e
service crond restart
0 0 * * * sh /root/backup/compress_backup.sh 2>&1 > /root/backup/log_`echo $(date +%Y-%m-%d)`
2.查看定時任務的執行,語句沒有順利執行,出現問題
tail -5 /var/log/cron
3.本地執行命令是正常的
sh compress_backup.sh > /root/backup/log_`echo $(date +%Y-%m-%d)`
二、問題原因
在crontab中%字元被認為是換行,所以你的命令中有%時,需要在crontab中要加\轉義
另外注意sh執行的腳本需要寫絕對路徑,否則也無法正確的執行
三、解決方案
在crontab中要加\轉義
crontab -e
service crond restart
0 0 * * * sh /root/backup/compress_backup.sh 2>&1 > /root/backup/log_$(date +\%Y-\%m-\%d)
重啟查看定時任務的執行,語句正常
tail -5 /var/log/cron
查看文件備份成功且日誌正確生成