linux定時執行python指令碼的方法以及失敗不執行的處理方法
阿新 • • 發佈:2022-04-10
均益最近寫了個python指令碼,需要每天固定個時間執行一次。在shell視窗下執行是沒問題的,但是定時任務的時候老是不執行。如果你也遇到與均益一樣的問題,那麼可以看一下下面的內容,你肯定可以找到解決方案的。這是均益花不少時間整理出來的。
首頁,linux定時任務用到的是crontab,我們來看一下crontab如何使用
crontab-1[user]-列出使用者目前的crontab.
crontab-e[user]-編輯使用者目前的crontab.
crontab-d[user]-刪除使用者目前的crontab.
crontab -l 檢視定時任務 crontab -e 編輯或者加入新的定時任務 crontab -d 刪除定時任務
crontab定時設定
30 21 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每晚的21:30重啟apache 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每月1、10、22日的4 : 45重啟apache 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每週六、週日的1 : 10重啟apache 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart 上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重啟apache 0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart 上面的例子表示每星期六的11 : 00 pm重啟apache * */1 * * * /usr/local/etc/rc.d/lighttpd restart 每一小時重啟apache * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart 晚上11點到早上7點之間,每隔一小時重啟apache 0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart 每月的4號與每週一到週三的11點重啟apache 0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart 一月一號的4點重啟apache
其次,需要注意的是
1、指令碼路徑最好用絕對路徑,如果腳本里面有檔案操作,裡面的檔案也需要用絕對路徑
2、python指令碼檔案的第一行,寫明pythoh的路徑,#!/usr/local/bin/python
這個可以通過 which python 這個語句找到
3、檔案需要有執行許可權,linux的檔案執行許可權內容可以看這篇文章 http://junyiseo.com/linux/327.html
最後,linux定時執行失敗的處理方法
如果我們的設定好了定時任務,但是卻沒有看到執行,可以通過下面的方法逐一檢視
1、檢視crontab的狀態,看crontab是否開啟
service crond start 啟動 service crond stop 停止 service crond restart 重啟 service crond reload 重新載入
2、看定時執行日誌,是否有執行檔案
cat /var/log/cron
3、看檔案是否有執行許可權,是否使用絕對路徑,這個在上面說過
4、如果上面的都沒有問題,那就是指令碼的執行問題,這時候就需要看執行的錯誤日誌。這個日誌一般在 /var/spool/mail/ 。在這個資料夾裡一般有幾個使用者的資訊,我們一般是root這個使用者,所以我們看這個root的資訊。如果你是其他賬號,可以看其他的使用者的。