【Day26】排程 - 重開機後排程不見惹?簡單幾個步驟,從此以後完全自動
這篇文章寫於 2020 年,文中的工具與版本可能已經更新,實作時請以官方文件為準。
本文目錄
解決問題的方法 ≠ 最好的方法;我只是提出我的解法,了解問題發生的原因後你可以想想自己如果遇到了會怎麼解決
為什麼寫這篇文章
昨天的教學讓你的排程穩定的在背景執行,但是你重開機在終端機(Terminal)輸入 forever list 的指令你會發現 forever 根本沒有 forever
為了決這個問題,今天會教你如何在電腦啟動時執行 script 讓 forever 跑起來的方法,這塊我會分成 windows 跟 mac 來說明,請大家安心服用
今日目標
1. 設定 mac 排程
1.1 撰寫執行排程的 shell script :crawler_cron.sh
1.2 將 crawler_cron.sh 設定為可以被執行
1.3 設定 crawler_cron.sh 在使用者登入後自動執行
1.4 重新登入確認 forever 是否運行
2. 設定 windows 排程
2.1 進入排程設定頁面
2.2 設定觸發條件
2.3 打開 windows 歷程紀錄
2.4 重開機確認 forever 是否運行
1. 設定 mac 排程
1.1 撰寫執行排程的 shell script :crawler_cron.sh
-
在專案目錄下建立存放 shell script 的
sh 資料夾,並新增 crawler_cron.sh-
shell script 寫法很簡單,平常你怎麼在終端機下指令就怎麼寫
-
專案資料夾路徑可用
pwd指令取得
crawler_cron.sh
# 進入專案資料夾 cd /專案資料夾路徑 # 啟動排程服務 yarn forever -
-
執行 crawler_cron.sh 確認運作邏輯跟你想的一樣
sh crawler_cron.sh
1.2 將 crawler_cron.sh 設定為可以被執行
建立的檔案一開始只有讀寫功能,我們要將 crawler_cron.sh 設定為可以被執行,才不會在自動化時因權限不足執行失敗
-
我們先觀察 crawler_cron.sh 的權限
# 進入資料夾 cd sh # 列出資料夾地下檔案權限 ll
-
目前 crawler_cron.sh 的權限是
-rw-r--r---
權限要把他切分成 3 段來看:owner/group/others,所以代表檔案的 owner 有讀(r)寫(w)的權限,而 group/others 只有讀(r)的權限
-
而我們要讓這個檔案可以被執行(x)需要下指令更改權限
chmod 755 crawler_cron.sh
想要深入了解 chmod 檔案權限概念的請參考這篇文章
-
1.3 設定 crawler_cron.sh 在使用者登入後自動執行
-
我們要先確認 crawler_cron.sh 的檔案資訊

-
將打開檔案的應用程式設定成 iTerm (如果設定成 mac 原生的 終端機 也可以)
-
shell script 必須在終端機相關應用程式下執行

-
-
設定 crawler_cron.sh 在使用者登入後自動執行
-
進入 系統偏好設定 後,選擇 使用者與群組

-
選擇要觸法這個 shell script 的使用者,在 登入項目 下按 + 來新增觸發的項目

-
請選擇剛剛設定為可以 被執行的 crawler_cron.sh

-
加入項目後把 隱藏 打勾

-
1.4 重新登入確認 forever 是否運行
請你重新登入後在終端機(Trerminal)輸入 forever list 的指令確認是否正常運行

2. 設定 windows 排程
2.1 進入排程設定頁面
-
在鍵盤同時按下 : WIN + R
-
輸入 : taskschd.msc

2.2 設定觸發條件
-
建立工作

-
選擇以最高權限執行,這裡我選擇 不論使用者登入與否均執行 是因為我要在開機時就觸發,而剛開機的時候使用者是還沒登入的;這塊可以依照自己的實際需求去做調整

-
在這裡設定為
啟動時會開始工作
-
編輯動作的部分有幾個需要注意
-
程式或指令碼 : 你要找到當初安裝 yarn 的路徑,及 yarn.cmd 的檔案
-
新增引數 : 填上 forever ,因為我們是用 yarn forever 啟動程式的
-
開始位置 : 把專案的路徑複製上去即可

-
2.3 打開 windows 歷程紀錄
-
windows 需打開歷程紀錄否則不會執行該排程
-
我們看到建立的工作在歷程紀錄旁邊顯示 (已停用),我們需要把他開啟

-
在左上角 工作排程器(本機) 按右鍵,選擇 啟用所有工作歷程紀錄

-
確認你要執行工作的歷程紀錄旁邊 沒有(已停用),就代表設定完成嚕

-
2.4 重開機確認 forever 是否運行
請注意因為使用的是最高權限執行 yarn forever,所以你在 cmd 裡面用 forever list 是看不到的
-
必須要用系統管理員身分執行 cmd

-
在這個權限下輸入指令 forever list 才能確認是否正常運行

ℹ️ 專案原始碼
- 今天的完整程式碼可以在這裡找到喔
- 我昨天的把昨天的程式碼打包成壓縮檔,你可以在乾淨的環境試試看排程是不是重開機後依舊存在呢~
- 請記得在終端機下指令 yarn 才會把之前的套件安裝
- windows需下載與你chrome版本相同的chrome driver放在專案根目錄
- 要在tools/google_sheets資料夾放上自己的憑證,申請流程請參考Day17
- 調整fanspages資料夾內目標爬蟲的粉專網址
- 調整.env檔
- 填上FB登入資訊
- 填上FB版本(classic/new)
- 填上IG登入資訊
- 填上SPREADSHEET_ID
- 填上爬蟲執行時間(CRONJOB_TIME)
- 在終端機下指令 npm install forever -g ,讓你在終端機的任何位置都能管控排程
- 在sh資料夾中設定執行排程的shell script
參考資源
在許多人的幫助下,本系列文章已出版成書,並添加了新的篇章與細節補充:
- 加入更多實務經驗,用完整的開發流程讓讀者了解專案每個階段要注意的事項
- 將爬蟲的步驟與技巧做更詳細的說明,讓讀者可以輕鬆入門
- 調整專案架構
- 優化爬蟲程式,以更廣的視角來擷取網頁資訊
- 增加資料驗證、錯誤通知等功能,讓爬蟲執行遇到問題時可以第一時間通知使用者
- 排程部分改用 node-schedule & pm2 的組合,讓讀者可以輕鬆管理專案程序並獲得更精確的 log 資訊
有興趣的朋友可以到天瓏書局選購,感謝大家的支持。

留言載入中…