常說,科技始終來自於人性,而懶惰就是人創造東西的動力
為了解放雙手,創造更多時間價值,這邊我們要先理解什麼是crontab,並利用crontab的設定來幫我們處理例行性任務,並延伸到 aws EventBridge 去設定定時排程,去定時執行我們的爬蟲~
Crontab(是 cron table的縮寫)是一個用於在Unix和Unix-like操作系統上定期執行任務的工具。這些任務通常被稱為"cron jobs"。Crontab允許用戶定義計劃的任務,以便在特定的日期和時間執行,無需手動操作。
而Cron jobs的執行時間由一個稱為cron表達式
的字符串來指定。這個表達式包含五個字段,分別表示分鐘、小時、日期、月份和星期幾。
22 3 * * sun //Cron表達式
分 時 日期 月份 星期幾
而在 Linux 系統上,每一位使用者都可以自訂自己的 crontab
排程工作,若要查看自己的 crontab
內容,可以使用 crontab
指令加上 -l
參數:
# 查看自己的 crontab
crontab -l
而如果要開始於本地電腦編輯排程工作,可以使用 crontab
指令加上 -e
參數,這時候就會開啟該自己crontab
內容
# 編輯 crontab 內容
crontab -e
若要刪除目前所有的 crontab
,可以使用 -r
參數:
# 刪除 crontab 內容
crontab -r
接下來是本地如何設定我的排程工作並執行我的python檔案,開啟命令提示字元,輸入crontab -e
,會開啟自己crontab內容,並輸入 i 切換到可編輯狀態。
32 22 * * 7 cd /Users/dale/Web/python-yoga
&& source venv/bin/activate
&& /usr/bin/python3 main.py
這邊將shell設定內容擷取出來,這邊可以設定規則是,先設定cron表達式
,這邊是設定於每個禮拜天的10:32分
去啟動crontab,並切換到/Users/dale/Web/python-yoga
檔案位置,&&
是接著執行指令,source venv/bin/activate
(這段是進入我的環境變數),接下來是執行我的python檔案,解釋如下
正常我們執行python檔案寫法如下
python3 main.py
但在crontab 寫法必須寫完整路徑,故變成以下
/usr/bin/python3 main.py
撰寫完畢後,輸入:wq
儲存後離開,看到shell回應crontab: installing new crontab
,代表設定完成!,接下來就等時間到系統就會幫我們執行拉~
首先到我們的lambda function 點擊Add trigger
接下來設定我們的排程設定,這裡選擇EventBridge,進行規則的命名,每兩小時跑一次匯率排程,選擇Schedule expression ,這邊aws有兩種表達方式,一種是rate(1day) or cron(******)
的方式,在aws這裡還有包括到年份也可以設定。
crontab如果時間不知道怎麼撰寫,也可以參考這個小工具連結,或是點擊cron or rate expressions 的aws文件說明,相關連結會放在底下供參考,設定完成後點擊ADD新增
新增完畢後下方就會出現設定的trigger,這裡我們可以點藍色名稱進去
這裡可以看到詳細的啟動時間,底下也成功顯示每兩小時啟動一次區,右邊選擇local time zone 可以看到以當地時間他在幾點幾分會執行這個trigger。
而如果是有執行特定時間的設定,且aws地區當初設定是其他國家的話(例如tokyo),則設定完會是以那個地區時間為主哦(東京跟台灣時差一小時)。
例如設定台灣的時間中午 12:00 啟動時,則crontab東京的時間設定11:00才對
總結:結合上次的爬蟲玉山匯率,再搭配crontab的知識點,就可以組合出一個實際應用小例子,再加以設計變化,就可以作為一個小型的side project拉(自己說),最後附上爬蟲玉山文章連結,可以搭配服用哦!
參考連結:
https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html
https://www.runoob.com/linux/linux-comm-crontab.html
https://linux.vbird.org/linux_basic/centos7/0430cron.php