昨天,配置crontab時遇到一些坑。crontab雖然算比較熟悉了,但也有1年多沒碰過,有點生疏了,低階錯誤基本又犯了一遍。順便整理下。
如果配置了crontab,之後沒有生效,怎麼辦?
按照如下順序處理:
1,命令單獨拿出來,終端中執行
這個可以暴露出如下問題
a,指令碼是否存在許可權問題(chmod +x xx.sh)
b,是否存在(手抖)寫錯路徑等低階錯誤
c,如果依賴特定conda環境,則需要conda activate ***
2, 是否使用相對路徑
如果1執行ok,則
a,檢查命令中的x.sh等換成/home/***/x.sh等絕對路徑,y.py也一樣,用完整絕對路徑.
b,如果py依賴特定conda,則必須使用conda中的特定py,
下面就是conda的center環境的python
1
/home/john/anaconda3/envs/center/bin/python xx.py
3,是否啟動了crontab 服務
1234567
方法1,每次修改crontab自動回顯:crontab: installing new crontab,說明啟動了服務john@vm-0-4-ubuntu:~$ crontab -e
crontab: installing new crontab
方法2service cron status
下面會顯示activate(running)類似字樣
4,check下伺服器時間,國外預設時間和國內存在時差(查時間命令(linux):date)
5,檢查時間配置規則,是否正確(右到左,周年月時分,沒啥說的)
6,檢視cron執行日誌(是否xx時間啟動xx命令)
1
sudo tail -20f /var/log/cron.log
如果這個檔案不存在呢?
12
sudo vim /etc/rsyslog.d/50-default.conf找到cron開始的行,前面的注釋符號#去掉
7,字元轉義,這個是昨天才注意到的,之前自己執行資料庫備份任務都是py指令碼,自動實現按照日期備份,防止同名覆蓋。才注意到crontab也支援命令中夾雜變數。簡單的備份就不用通過py指令碼實現了。
12
終端中:now = date +%y%m%d && tar -xzvf xx_$now.tar.gz ***/crontab:now = `date +\%y\%m\%d` && tar -xzvf xx_$now.tar.gz ***/
注意」%」前的轉義的」",和外部那個非單引號,而是鍵盤上部1左邊那個按鍵.
CRONTAB 任務執行失敗
問題背景 每天資料庫自動備份並自動發出郵件。手動執行指令碼沒有任何問題,但放在crontab 則無法執行。排查過程 查詢日誌,發現系統日誌裡面沒有crontab的日誌。1.開啟日誌,我這裡為ubuntu系統 vi etc rsyslog.d 50 default.conf cron.var log ...
crontab自動執行任務,失敗原因記錄
伺服器上使用crontab部署這兩個每分鐘自動執行的命令。首先,這兩個命令是之前的人部署的,在我接手之前,就一直在了的。根據命令,實際上應該是做到每分鐘都執行一次指令碼。但是實際操作中,卻發現,其實並沒有嚴格的按照每分鐘一次執行,有時候是兩三分鐘才會執行一次。因為這個延遲並不是特別影響實際應用,所以...
Crontab定時任務配置
使用者所建立的crontab檔案中,每一行都代表一項任務,每行的每個字段代表一項設定,它的格式共分為六個字段,前五段是時間設定段,第六段是要執行的命令段,格式如下 minute hour day month week command 在以上各個欄位中,還可以使用以下特殊字元 星號 代表所有可能的值,...