使用 cron 自動化資料工作

在 Shell 中進行資料處理

Susan Sun

Data Person

什麼是排程器?

  • 「排程器」會依預先設定的時間執行工作
  • 商用排程器:Airflow、Luigi、Rundeck 等
  • cron 排程器具有
    • 簡單
    • 免費
    • 可自訂
    • 純命令列
    • MacOS 與 Linux 原生支援
在 Shell 中進行資料處理

什麼是 cron?

Cron

  • 以時間為基礎的工作排程器
  • 在 MacOS、Unix 預先安裝
  • Windows 可透過 Cygwin 安裝,或改用 Windows Task Scheduler
  • 用於自動化系統維護、bash 指令稿、Python 作業等
在 Shell 中進行資料處理

什麼是 crontab?

Crontab 是集中管理 cron 工作的檔案。

crontab -l
no crontab for <username>

文件

man crontab
在 Shell 中進行資料處理

將工作加入 crontab

方法 1:用文字編輯器(如 nano、Vim、Emacs)修改 crontab

方法 2:將排程指令 echo 到 crontab

echo "* * * * * python create_model.py" | crontab

檢查工作是否已正確排程:

crontab -l
* * * * * python create_model.py
在 Shell 中進行資料處理

學會設定 cron 時間

cron 工作最常見的排程是每「1 分鐘」。

拆解 cron 工作的時間欄位:

.---------------- 分(0 - 59)
|  .------------- 時(0 - 23)
|  |  .---------- 日(1 - 31)
|  |  |  .------- 月(1 - 12)或 jan,feb,mar,apr ...
|  |  |  |  .---- 週(0 - 6)(Sunday=0 或 7)或 sun,mon,tue,wed ...
|  |  |  |  |
*  *  *  *  * command-to-be-executed
在 Shell 中進行資料處理

學會設定 cron 時間

*  *  *  *  * python create_model.py

解讀

  • 每小時的每分鐘、每天、每個月、每週的每天都執行。

  • 簡而言之,就是每分鐘執行一次

延伸資源

在 Shell 中進行資料處理

一起來練習吧!

在 Shell 中進行資料處理

Preparing Video For Download...