1. 程式人生 > 其它 >linux定時執行python指令碼的方法以及失敗不執行的處理方法

linux定時執行python指令碼的方法以及失敗不執行的處理方法

均益最近寫了個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的資訊。如果你是其他賬號,可以看其他的使用者的。