今天主要會用到linux下的cron這個服務,ok,直接開始
基本上所有的linux發行版在預設情況下都預安裝了cron工具。
即使未預裝cron,也很簡單,執行幾條簡單的命令就可手動安裝
# 檢查是否已經預裝了cron安裝並啟動服務service cron status
安裝:apt-get install cron安裝完成後檢查一下是否安裝成功,同樣使用 status命令檢視啟動/停止/重啟:service cron start/stop/restart
查詢當前任務:crontab -l
出現如下提示表示安裝成功:
這個也表示可以正常使用
有幾個關於cron的簡單用法可以了解一下,後面也會通過乙個案例詳細介紹如何使用
首先,列出當前使用者計畫的cron作業:
crontab -l檢視其它使用者的cron作業:
crontab –l –u username移除已經計畫的cron作業:
crontab –r首先,通過如下命令新增或更新crontab中的任務
第一次進入會要求你選擇編輯器,這個根據自己的習慣選擇。
選擇好之後會進入到這樣的乙個介面:
重點是最下面的一段內容:
m h dom mon dow commmand這個其實就是crontab排程作業的乙個使用介紹,可以用來設定定時任務。
具體一點的語法是這樣的:
m h dom mon dow command舉幾個簡單的應用案例:* * * * * command
- - - - - -
| | | | | |
| | | | | --- 預執行的命令
| | | | ----- 表示星期0~7(其中星期天可以用0或7表示)
| | | ------- 表示月份1~12
| | --------- 表示日期1~31
| ----------- 表示小時1~23(0表示0點)
------------- 表示分鐘1~59 每分鐘用*或者 */1表示
0 2 * * * command
0 5,17 * * * command
*/10 * * * * command
0 17 * jan,may,aug sun command上面案例中的command 表示你具體需要執行的任務,例如列印一段話:
echo "hello xiaoyi" >> /tmp/test.txt或者將這段話輸出到txt中:
echo "hello xiaoyi" >> /tmp/test.txt或者是你需要執行乙個python指令碼:
python demo.py filepath上面的都搞清楚了,就可以開始今天的重頭戲了。
① python指令碼
首先需要python指令碼完成以下功能:
上面這個流程大致的偽**是這樣的:
if __name__ == '__main__':郵件監控可以在加乙個try catch的異常捕獲,有異常發生的時候則傳送郵件"""獲取最新資料日期"""
latest_date = get_max_date()
# 以最新日期為名建立資料夾
download_dir = os.path.join(sys.ar**[1], latest_date)
if not os.path.exists(download_dir):
os.makedirs(download_dir)
download_file(latest_date, download_dir)
"""處理最新資料並儲存"""
process_data(latest_date, download_dir)
python編輯郵件內容並傳送以前也有寫過,可以參考下面這個: python郵件傳送
②編寫cron任務
開啟crontab,編輯如下內容到最後一行,儲存並退出
crontab是會自動實時更新任務列表的,如果不放心也可以通過restart命令重啟cron 服務【參考文章開頭】
這裡有個小建議,所有的路徑都填寫絕對路徑
③ 效果監控
如果python**沒有問題,任務會定時執行。
這裡建議可以把自己的command單獨在控制台執行下,沒有問題的時候再寫進到cron任務列表紅。
最終小一的定時任務執行截圖如下:
說點題外話
如果說你平時的工作有很多重複的任務,像日常指標的採集、取數匯**計、郵件自動**等等
一旦這些工作你可以通過指令碼設定好邏輯,自動化任務也就可以實現它,最多就需要你每天注意一下郵件,看看有沒有發生錯誤就行了。
多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在**尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
qq群:1057034340
Python實現定時任務
工作中可能需要週期性執行一些任務,俗稱定時任務。linux環境下,可以借助於系統自帶的crontab完成定時任務。但是很多時候,開發人員可能並沒有許可權去操作crontab。而schedule是python的輕量級定時任務解決方案,可以滿足常定時採集資料,定時執行指令碼程式等週期性任務需求。pip ...
Python實現定時任務
python下實現定時任務的方式有很多種方式。下面介紹幾種 迴圈sleep 這是一種最簡單的方式,在迴圈裡放入要執行的任務,然後sleep一段時間再執行。缺點是,不容易控制,而且sleep是個阻程式設計客棧塞函式。def timer n 每n秒執行一次 while true print time.s...
Python定時任務實現
定時執行任務,定時 pip install schedule import schedule import time 不帶引數定時執行 def job print i m working.schedule.every 10 seconds.do job 每10秒執行一次 schedule.every...