如何實現python自動化

linux環境下實現python自動化

今天主要介紹 Linux 下的 cron 這個服務,熟練使用它可讓你在工做中省去大部分時間,提升工做效率python

1、安裝cron

基本上全部的Linux發行版在默認狀況下都預安裝了cron工具。 即便未預裝cron,也很簡單,執行幾條簡單的命令就可手動安裝linux

# 檢查是否已經預裝了cron
service cron status
複製代碼

默認通常狀況是出現如下結果,說明已經可使用cron了數據庫

root@vmi411292:~# servide cron status
-bash: servide: command not found
root@vmi411292:~# service cron status
● cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-07-01 04:36:42 CST; 5 months 2 days ago
     Docs: man:cron(8)
 Main PID: 487 (cron)
    Tasks: 1
   Memory: 10.0M
      CPU: 25min 11.945s
   CGroup: /system.slice/cron.service
           └─487 /usr/sbin/cron -f

複製代碼

若是沒安裝的話輸入按照下表操做bash

安裝:apt-get install cron
啓動/中止/重啓:service cron start/stop/restart
查詢當前任務:crontab -l
複製代碼

2、cron相關用法

有幾個關於cron的簡單用法能夠了解一下,後面也會經過一個案例詳細介紹如何使用服務器

首先,列出當前用戶計劃的cron做業:markdown

crontab -l
複製代碼

查看其它用戶的cron做業:dom

crontab –l –u username
複製代碼

移除已經計劃的cron做業:ide

crontab –r
#注意這個命令會移除所有設置好的自動化命令,要刪除其中一條使用crontab -e進行編輯
複製代碼

熟悉了cron的查看,接下來進行語法的介紹工具

m h dom mon dow commmand
複製代碼

這個是crontab調度做業的一個使用,能夠用來設置定時任務 ,具體一點的語法是這樣的:spa

m h dom mon dow command
* * * * * command
- - - - - -
| | | | | |
| | | | | --- 預執行的命令
| | | | ----- 表示星期0~7(其中星期天能夠用0或7表示)
| | | ------- 表示月份1~12
| | --------- 表示日期1~31
| ----------- 表示小時1~23(0表示0點)
------------- 表示分鐘1~59 每分鐘用*或者 */1表示
複製代碼

舉幾個簡單的應用案例:

  • 天天 04:00 執行任務
0 4 * * * command
複製代碼
  • 天天 5:00和17:00執行任務
0 5,17 * * * command
複製代碼
  • 每10min 執行一次任務
*/10 * * * * command
複製代碼
  • 在特定的某幾個月的週日 17:00 執行任務
0 17 * jan,may,aug sun command
複製代碼

上面案例中的command 表示你具體須要執行的任務
例如打印一段話:

echo "Hello World"
複製代碼

或者將這段話輸出到txt中:

echo "Hello World" >> /tmp/test.txt 
複製代碼

或者是你須要執行一個Python腳本:

python demo.py filepath
複製代碼

3、定時任務實戰

上面的都搞清楚了,就能夠開始今天的重頭戲了

首先咱們須要天天從ftp服務器中下載最新的任務數據,將數據下載到本地後經過Python進行數據彙總統計,最後將結果存入數據庫中,若是期間某個環節出現問題則發送告警郵件。

一、編寫Python腳本

首先須要編寫Python腳本完成如下功能:

  • 從數據庫中獲取最新數據日期
  • 從ftp中下載最新數據到本地
  • 對本地最新數據進行彙總統計
  • 統計結果存入數據庫彙總
  • 郵件通知

上面這個流程大體的僞代碼是這樣的:

if __name__ == '__main__':
    """獲取最新數據日期"""
    latest_date = get_max_date()
    # 以最新日期爲名建立文件夾
    download_dir = os.path.join(sys.argv[1], latest_date)
    if not os.path.exists(download_dir):
        os.makedirs(download_dir)
        
    """從ftp中下載最新數據"""
    download_file(latest_date, download_dir)
    """處理最新數據並保存"""
    process_data(latest_date, download_dir)
複製代碼

郵件監控能夠在加一個try catch的異常捕獲,有異常發生的時候則發送郵件 二、 編寫cron定時任務 打開crontab,編輯以下內容到最後一行,保存並退出

crontab是會自動實時更新任務列表的,若是不放心也能夠經過restart命令重啓cron 服務

05 8,18 * * * python /home/demo.py /home/定時任務源數據
複製代碼

這裏有個小建議,全部的路徑都填寫絕對路徑

若是Python代碼沒有問題,任務會定時執行。

這裏建議能夠把本身的command單獨在控制檯運行下,沒有問題的時候再寫進到cron任務列表紅。

4、總結

使用cron仍是很方便的,若是說你平時的工做有不少重複的任務,像平常指標的採集、取數彙總統計、郵件自動轉發等等

一旦這些工做你能夠經過腳本設置好邏輯,自動化任務也就能夠實現它,最多就須要你天天注意一下郵件,看看有沒有發生錯誤就好了。

5、題外話

有時候若是你的服務器被黑客攻擊了,也能夠用cron -l查看黑客有沒有在你的服務器執行自動化定時任務,由於大部分黑客用的注入都是定時的執行他的腳本,用你的電腦挖礦等等,小編曾經就遭受過好幾回黑客的攻擊,這個話題有興趣的能夠下次再聊,感興趣的朋友看完記得點個贊再走哦,碼字不易哈哈

相關文章
相關標籤/搜索