軟體 crontab任務配置失敗原因總結和技巧

2021-10-05 17:28:40 字數 1431 閱讀 4488

昨天,配置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 服務

123

4567

方法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

如果這個檔案不存在呢?

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 ***/

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 在以上各個欄位中,還可以使用以下特殊字元 星號 代表所有可能的值,...