一般能使用crontab -e
編輯任務的機器crond服務都開啟了,但會存在某些時刻內容修改之後新增的任務不啟動的問題。比較典型的場景是舊的定時任務還在執行,新的定時任務沒有啟動。
service crond restart
指令碼沒有執行許可權,可以使用chmod命令對指定檔案增加執行許可權,然後可以正常執行。
crontab執行時通常以當前使用者的家目錄作為工作目錄,比如test使用者,more嗯會以/home/test/
為工作目錄。具體在crontab裡呼叫乙個向工作目錄輸出檔案的指令碼,可以觀察到這個特點。編寫時定時任務時使用絕對路徑。
伺服器時間不正確,可能沒有與正常時間同步,導致存在時差看不到執行結果。這點可以對/var/log/cron
執行tail -f
來觀察。可能會影響一些存在超時機制的程式,需要調整時間,和正常時間保持一致。
crontab執行時不識別profile的配置變數。有時候命令中含有需要提前匯入的環境變數,指令碼執行時可以成功,但crontab執行時並沒有匯入這些變數,也會造成執行失敗。
通常,設定變數的三種方法:
在/etc/profile裡面匯入的變數,每次在使用shell的時候可以征程載入內容,但是crontab啟動任務時並不會,也就是前兩種設定的變數在crontab執行時是無效的。可以改用bash指令碼的形式,在執行原定程式之前以export方式匯入變數,然後再執行程式。
#!/bin/bash
export dm_home=/home/***
python /home/test/check.py
crontab 執行失敗原因
1.cron 服務沒有啟動 使用 etc init.d crond status 如沒有啟動,啟動該服務 etc init.d crond start 2.crontab 指令碼中使用了相對路徑引用可執行檔案,導致找不到可執行檔案 3.crontab 使用者對crontab 指令碼中呼叫的可執行程式...
CRONTAB 任務執行失敗
問題背景 每天資料庫自動備份並自動發出郵件。手動執行指令碼沒有任何問題,但放在crontab 則無法執行。排查過程 查詢日誌,發現系統日誌裡面沒有crontab的日誌。1.開啟日誌,我這裡為ubuntu系統 vi etc rsyslog.d 50 default.conf cron.var log ...
expect在crontab下執行失敗的問題
國慶節在家收到oz報警,說沒有接收到需要入庫的檔案。登陸vpn,上指令碼機上看了一下。發現需要上報的檔案生成成功,但卻沒有將檔案成功上傳到oz的檔案伺服器上。上傳檔案的 如下 在shell下直接執行是成功的,放在crontab下就會有問題。為了定位問題,我將crontab的執行任務輸出到乙個檔案中 ...