1. 程式人生 > >定期執行 Python 爬蟲程式並儲存至資料庫

定期執行 Python 爬蟲程式並儲存至資料庫

例行性工作排程

Linux 提供使用者執行例行性工作排程的指令是 crontab,加入工作排程之前首先我們用指令 crontab -l 看目前的 AWS Lightsail 使用者(ubuntu)有無工作排程。

crontab -l## no crontab for ubuntu

系統告訴我們目前這個伺服器上沒有工作排程,接著寫作一個 Python 程式,這個程式會在指定路徑 /home/ubuntu/crontab_test/ 建立一個文字檔,檔案名稱與內容都有加註系統日期時間,以便清楚地觀察例行性工作排程進行。

接著要新增一個工作排程,每分鐘都自動執行 show_datetime.py;首先我們輸入 crontab -e

指令,系統會問要使用哪一個編輯器,我選 4:vim。

crontab - e
Select an editor.  To change later, run 'select-editor'.
1. /bin/ed2. /bin/nano        <---- easiest3. /usr/bin/code4. /usr/bin/vim.basic5. /usr/bin/vim.tiny
Choose 1-5 [2]: 4

vim 會開啟一個文字檔讓我們新增工作排程,新增完畢後系統會將該排程新增至 /var/spool/cron/ubuntu,如此就可以完成工作排程。

我們輸入 i(意味著 insert)然後將遊標移至檔案的最下方輸入:

*/1 * * * * /home/ubuntu/anaconda3/bin/python /home/ubuntu/crontab_test/show_datetime.py

這個 crontab 格式表示每一分鐘都執行 show_datetime.py;特別值得注意的是應用程式(Python)與程式碼(show_datetime.py)都指定絕對路徑,才能確保被成功執行。關於 crontab 格式的詳細解說,有興趣的讀者可以參考鳥哥的 Linux 私房菜,或者等 Pyradise 帽子哥之後來跟大家聊聊 :)

新增工作排程

然後按 esc 鍵表示完成編輯(注意 INSERT 字樣消失了)。

按 esc 鍵完成編輯

再輸入 :wq

後按下 enter 鍵儲存編輯並退出檔案編輯視窗,至此新增工作排程就完成了,系統也會告訴我們新的工作排程已經加入:

## crontab: installing new crontab

過幾分鐘後,我們可以去看指定路徑下是否有加註系統日期時間的檔案每隔一分鐘被建立出來。

cd /home/ubuntu/crontab_testls -l

完成簡單的 crontab 測試之後,可以下指令 crontab -r 移除所有工作排程,或者下 crontab -e 用編輯來移除特定的工作排程。

# 移除所有工作排程與文字檔crontab -rrm -r /home/ubuntu/crontab_test/*.txt