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