軟件_crontab任務配置失敗原因總結和技巧

原創博客鏈接:軟件_crontab任務配置失敗原因總結和技巧

 昨天,配置crontab時遇到一些坑。crontab雖然算比較熟悉了,但也有1年多沒碰過,有點生疏了,低級錯誤基本又犯了一遍。順便整理下。

如果配置了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環境的python

 

1
/home/john/anaconda3/envs/center/bin/python  xx.py

3,是否啓動了crontab 服務

 

1
2
3
4
5
6
7
方法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命令)

 

1
sudo tail -20f /var/log/cron.log

如果這個文件不存在呢?

 

1
2
sudo vim /etc/rsyslog.d/50-default.conf
找到cron開始的行,前面的註釋符號#去掉

7,字符轉義,這個是昨天才注意到的,之前自己執行數據庫備份任務都是py腳本,自動實現按照日期備份,防止同名覆蓋。才注意到crontab也支持命令中夾雜變量。簡單的備份就不用通過py腳本實現了。

 

1
2
終端中: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左邊那個按鍵.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章