今天主要介紹 Linux 下的 cron 這個服務,熟練使用它可讓你在工做中省去大部分時間,提升工做效率python
基本上全部的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
複製代碼
有幾個關於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表示
複製代碼
舉幾個簡單的應用案例:
0 4 * * * command
複製代碼
0 5,17 * * * command
複製代碼
*/10 * * * * command
複製代碼
0 17 * jan,may,aug sun command
複製代碼
上面案例中的command 表示你具體須要執行的任務
例如打印一段話:
echo "Hello World"
複製代碼
或者將這段話輸出到txt中:
echo "Hello World" >> /tmp/test.txt
複製代碼
或者是你須要執行一個Python腳本:
python demo.py filepath
複製代碼
上面的都搞清楚了,就能夠開始今天的重頭戲了
首先咱們須要天天從ftp服務器中下載最新的任務數據,將數據下載到本地後經過Python進行數據彙總統計,最後將結果存入數據庫中,若是期間某個環節出現問題則發送告警郵件。
一、編寫Python腳本
首先須要編寫Python腳本完成如下功能:
上面這個流程大體的僞代碼是這樣的:
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任務列表紅。
使用cron仍是很方便的,若是說你平時的工做有不少重複的任務,像平常指標的採集、取數彙總統計、郵件自動轉發等等
一旦這些工做你能夠經過腳本設置好邏輯,自動化任務也就能夠實現它,最多就須要你天天注意一下郵件,看看有沒有發生錯誤就好了。
有時候若是你的服務器被黑客攻擊了,也能夠用cron -l查看黑客有沒有在你的服務器執行自動化定時任務,由於大部分黑客用的注入都是定時的執行他的腳本,用你的電腦挖礦等等,小編曾經就遭受過好幾回黑客的攻擊,這個話題有興趣的能夠下次再聊,感興趣的朋友看完記得點個贊再走哦,碼字不易哈哈