原創:linux_crontab任務配置失敗緣由總結和技巧python
昨天,配置crontab時遇到一些坑。crontab雖然算比較熟悉了,但也有1年多沒碰過,有點生疏了,低級錯誤基本又犯了一遍。順便整理下。 linux
若是配置了crontab,以後沒有生效,怎麼辦?
按照以下順序處理:
1,命令單獨拿出來,終端中執行
這個能夠暴露出以下問題
a,腳本是否存在權限問題(chmod +x xx.sh)
b,是否存在(手抖)寫錯路徑等低級錯誤
c,若是依賴特定conda環境,則須要conda activate xxx 數據庫
2, 是否使用相對路徑
若是1執行ok,則
a,檢查命令中的x.sh等換成/home/xxx/x.sh等絕對路徑,y.py也同樣,用完整絕對路徑.
b,若是py依賴特定conda,則必須使用conda中的特定py,
下面就是conda的center環境的pythonubuntu
/home/john/anaconda3/envs/center/bin/python xx.py
3,是否啓動了crontab 服務vim
方法1,每次修改crontab自動回顯:crontab: installing new crontab,說明啓動了服務 john@VM-0-4-ubuntu:~$ crontab -e crontab: installing new crontab 方法2 service cron status 下面會顯示activate(running)相似字樣
4,check下服務器時間,國外默認時間和國內存在時差(查時間命令(linux):date)
5,檢查時間配置規則,是否正確(右到左,週年月時分,沒啥說的)
6,查看cron執行日誌(是否xx時間啓動xx命令)服務器
sudo tail -20f /var/log/cron.log
若是這個文件不存在呢?hexo
sudo vim /etc/rsyslog.d/50-default.conf 找到cron開始的行,前面的註釋符號#去掉
7,字符轉義,這個是昨天才注意到的,以前本身執行數據庫備份任務都是py腳本,自動實現按照日期備份,防止同名覆蓋。才注意到crontab也支持命令中夾雜變量。簡單的備份就不用經過py腳本實現了。日誌
終端中:now = date +%Y%m%d && tar -xzvf xx_$now.tar.gz xxx/ crontab:now = `date +\%Y\%m\%d` && tar -xzvf xx_$now.tar.gz xxx/
注意"%"前的轉義的"\",和外部那個非單引號,而是鍵盤上部1左邊那個按鍵.code