理解 crontab 幫助處理例行性任務

更新於 發佈於 閱讀時間約 5 分鐘
常說,科技始終來自於人性,而懶惰就是人創造東西的動力

為了解放雙手,創造更多時間價值,這邊我們要先理解什麼是crontab,並利用crontab的設定來幫我們處理例行性任務,並延伸到 aws EventBridge 去設定定時排程,去定時執行我們的爬蟲~

什麼是crontab?

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,代表設定完成!,接下來就等時間到系統就會幫我們執行拉~

AWS 如何設定排程任務?

首先到我們的lambda function 點擊Add trigger

raw-image

接下來設定我們的排程設定,這裡選擇EventBridge,進行規則的命名,每兩小時跑一次匯率排程,選擇Schedule expression ,這邊aws有兩種表達方式,一種是rate(1day) or cron(******)的方式,在aws這裡還有包括到年份也可以設定。

crontab如果時間不知道怎麼撰寫,也可以參考這個小工具連結,或是點擊cron or rate expressions 的aws文件說明,相關連結會放在底下供參考,設定完成後點擊ADD新增

raw-image

新增完畢後下方就會出現設定的trigger,這裡我們可以點藍色名稱進去

raw-image

這裡可以看到詳細的啟動時間,底下也成功顯示每兩小時啟動一次區,右邊選擇local time zone 可以看到以當地時間他在幾點幾分會執行這個trigger。

而如果是有執行特定時間的設定,且aws地區當初設定是其他國家的話(例如tokyo),則設定完會是以那個地區時間為主哦(東京跟台灣時差一小時)。

例如設定台灣的時間中午 12:00 啟動時,則crontab東京的時間設定11:00才對

raw-image


總結:結合上次的爬蟲玉山匯率,再搭配crontab的知識點,就可以組合出一個實際應用小例子,再加以設計變化,就可以作為一個小型的side project拉(自己說),最後附上爬蟲玉山文章連結,可以搭配服用哦!

python 爬蟲玉山匯率並部署到aws lambda


參考連結:

https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html

https://crontab.guru/

https://www.runoob.com/linux/linux-comm-crontab.html

https://linux.vbird.org/linux_basic/centos7/0430cron.php











avatar-img
15會員
37內容數
學涯無止境,透過每日or每週模仿學習筆記,不管是哪些領域也好,總有一天也可以從菜雞變小雞
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
DDDDD的沙龍 的其他內容
根據PHP官方說明,浮點數的精度有限。儘管取決於系統,PHP 通常使用 IEEE 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e-16。非基本數學運算可能會給出更大誤差,並且要考慮到進行複合運算時的誤差傳遞。
最近開了複委託打算定期定額買美股,主要因為交割戶是設定外幣帳戶交割,先前設置了常用銀行的外幣到價通知,但是美金最近一直逆空高灰,幾乎不會啟動到價通知🥲,只好一直關注銀行即期價格,但因為上班常常會忘記要看一下外幣網銀換匯優惠,故想說練習python之餘,並順便做個爬蟲將資料發送到line群組
以前公司在對於 git 合併衝突的解法通常是將master合回自己的分支接著開發,也習慣了這種作法,但線圖就是有點醜,後來到了新公司之後規定強制要使用rebase的方式處理,在此紀錄git rebase 處理merge 衝突。
菜雞成長故事 寫這一篇主因也是因為身邊朋友陸陸續續想往軟體業發展,或是想動手做做小專案,故才成就了這一篇心路歷程,這邊會介紹我的背景、學習管道跟我如何選擇第一個程式語言作為敲門磚跟學習時間,希望能幫助還在努力中或是預計要轉職的各位有一個方向或是參考?(雖然我依然還是一個小菜雞,請鞭小力)
isset(), empty() 和 is_null() 是 PHP 中常用的三個函數,它們用於檢查變量是否已經設置或是否為空值。以下是它們的區別:
根據PHP官方說明,浮點數的精度有限。儘管取決於系統,PHP 通常使用 IEEE 754 雙精度格式,則由於取整而導致的最大相對誤差為 1.11e-16。非基本數學運算可能會給出更大誤差,並且要考慮到進行複合運算時的誤差傳遞。
最近開了複委託打算定期定額買美股,主要因為交割戶是設定外幣帳戶交割,先前設置了常用銀行的外幣到價通知,但是美金最近一直逆空高灰,幾乎不會啟動到價通知🥲,只好一直關注銀行即期價格,但因為上班常常會忘記要看一下外幣網銀換匯優惠,故想說練習python之餘,並順便做個爬蟲將資料發送到line群組
以前公司在對於 git 合併衝突的解法通常是將master合回自己的分支接著開發,也習慣了這種作法,但線圖就是有點醜,後來到了新公司之後規定強制要使用rebase的方式處理,在此紀錄git rebase 處理merge 衝突。
菜雞成長故事 寫這一篇主因也是因為身邊朋友陸陸續續想往軟體業發展,或是想動手做做小專案,故才成就了這一篇心路歷程,這邊會介紹我的背景、學習管道跟我如何選擇第一個程式語言作為敲門磚跟學習時間,希望能幫助還在努力中或是預計要轉職的各位有一個方向或是參考?(雖然我依然還是一個小菜雞,請鞭小力)
isset(), empty() 和 is_null() 是 PHP 中常用的三個函數,它們用於檢查變量是否已經設置或是否為空值。以下是它們的區別:
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章探討如何使用 VBA 來設計一個隨機生成不重覆的排班表,解決依據每日、每站、每人進行的排班需求。文章分享了設定人員、站點及工作日的基本步驟,並使用 AI - ChatGPT 4o 做為互動,最終產生了滿意的結果,並提供了一個 VBA設計完成 的影片 以及 免費的檔案下載。
日期和時間: 2024-06-02 08:50:23 地點:UCLA校園 課程名稱:聊聊目前的工作習慣與任務系統 關鍵詞 工作規劃 系統化 價值創造 知識點總結 工作習慣與規劃: 講述了如何規劃一週的工作,特別是利用禮拜天來安排一週的工作計劃,並且介紹了135任務法。 系統化與習慣
Thumbnail
作者 Only 系列文章,【一天一千字,進化每一次】,談論時間管理容易讓人誤解,我們能管理時間,增加效率,但是那樣的作用並不大,我們真正能管理的是,什麼對我們來說最重要,這要回推到以終為始,你想成為什麼樣的人,就是做那樣的事!
Thumbnail
(1)事前LINE主動發出通知,無論何處,所有人均可掌握值勤排班內容  (2) 換班前幾天收到通知,可事先安排交代事務給下回值勤人員,讓值勤業務能順利實施
Thumbnail
放鬆的週末,我與幾位同事決定提升我們的後端開發技巧,選擇了「日期範圍生成器」作為我們的小型實作。作為團隊中較有經驗的PHP工程師,我引領著團隊從基礎程式碼的撰寫開始,進而深入到物件導向的結構調整,最後提高程式可擴充性的挑戰。雖然過程中遇到不少困難,但我們通過不斷的討論和優化,最終成功克服了所有挑戰。
Thumbnail
在工作中,我們經常需要處理各種報表,而其中一項任務就是每天手動更新報表。這可能是一個繁瑣且容易被遺忘的工作,但有幸的是,我們可以利用VBA(Visual Basic for Applications)和Windows工作排程器來自動化這個過程,讓我們在不知不覺中完成這項任務。
Thumbnail
"好想準時下班 ヽ(`Д´)ノ " 相信這一定是許多社畜上班族的內心話。究竟要如何提高工作效率呢? 趕快往下看看吧!
Thumbnail
在日常中,常有重複性相當高的事情,不斷地重複在做,重複的事做久就會慢慢變成是一個習慣,這個習慣就會讓人下意識地完成一些事情。 習慣是一種自動化的行為模式,這些行為模式在重複進行的過程中變得固定且容易自動化。 在Python程式語言中,for迴圈就類似這種概念
當一件事物的操作變成每日規律的待辦清單事項的時候
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這篇文章探討如何使用 VBA 來設計一個隨機生成不重覆的排班表,解決依據每日、每站、每人進行的排班需求。文章分享了設定人員、站點及工作日的基本步驟,並使用 AI - ChatGPT 4o 做為互動,最終產生了滿意的結果,並提供了一個 VBA設計完成 的影片 以及 免費的檔案下載。
日期和時間: 2024-06-02 08:50:23 地點:UCLA校園 課程名稱:聊聊目前的工作習慣與任務系統 關鍵詞 工作規劃 系統化 價值創造 知識點總結 工作習慣與規劃: 講述了如何規劃一週的工作,特別是利用禮拜天來安排一週的工作計劃,並且介紹了135任務法。 系統化與習慣
Thumbnail
作者 Only 系列文章,【一天一千字,進化每一次】,談論時間管理容易讓人誤解,我們能管理時間,增加效率,但是那樣的作用並不大,我們真正能管理的是,什麼對我們來說最重要,這要回推到以終為始,你想成為什麼樣的人,就是做那樣的事!
Thumbnail
(1)事前LINE主動發出通知,無論何處,所有人均可掌握值勤排班內容  (2) 換班前幾天收到通知,可事先安排交代事務給下回值勤人員,讓值勤業務能順利實施
Thumbnail
放鬆的週末,我與幾位同事決定提升我們的後端開發技巧,選擇了「日期範圍生成器」作為我們的小型實作。作為團隊中較有經驗的PHP工程師,我引領著團隊從基礎程式碼的撰寫開始,進而深入到物件導向的結構調整,最後提高程式可擴充性的挑戰。雖然過程中遇到不少困難,但我們通過不斷的討論和優化,最終成功克服了所有挑戰。
Thumbnail
在工作中,我們經常需要處理各種報表,而其中一項任務就是每天手動更新報表。這可能是一個繁瑣且容易被遺忘的工作,但有幸的是,我們可以利用VBA(Visual Basic for Applications)和Windows工作排程器來自動化這個過程,讓我們在不知不覺中完成這項任務。
Thumbnail
"好想準時下班 ヽ(`Д´)ノ " 相信這一定是許多社畜上班族的內心話。究竟要如何提高工作效率呢? 趕快往下看看吧!
Thumbnail
在日常中,常有重複性相當高的事情,不斷地重複在做,重複的事做久就會慢慢變成是一個習慣,這個習慣就會讓人下意識地完成一些事情。 習慣是一種自動化的行為模式,這些行為模式在重複進行的過程中變得固定且容易自動化。 在Python程式語言中,for迴圈就類似這種概念
當一件事物的操作變成每日規律的待辦清單事項的時候