linux_crontab任務配置失敗緣由總結和技巧

原創: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

相關文章
相關標籤/搜索