前言#
本文將紀錄如何在 macOS 上使用 crontab 設定,將已經完成的程式或腳本用 macOC 中的 crontab 實行自動化執行,設定定時任務自動執行。
前置準備#
1. 確認 deploy.sh 腳本可執行#
首先確認你的 deploy.sh 腳本具有執行權限:
bash
ls -la deploy.sh如果沒有執行權限,請執行:
bash
chmod +x deploy.sh2. 測試腳本是否正常運行#
在設定 crontab 之前,建議先手動執行一次確認腳本可以正常運行:
bash
./deploy.shcrontab 基本操作#
1. 查看現有的 crontab 任務#
bash
crontab -l如果沒有設定過,會顯示 crontab: no crontab for [username]
2. 編輯 crontab(新增任務)#
bash
crontab -e這會開啟預設的編輯器(通常是 vim 或 nano)
3. 新增自動部署任務#
在 crontab 編輯器中,新增以下這一行:
bash
0 0 * * * /Users/eason/Desktop/project/blog/deploy.sh >> /Users/eason/Desktop/project/blog/deploy.log 2>&1說明:
0 0 * * *= 每天晚上 12:00 執行>> /Users/eason/Desktop/project/blog/deploy.log 2>&1= 將輸出記錄到 deploy.log 檔案2>&1= 將錯誤訊息也導向到同一個日誌檔案
常用的 crontab 時間格式#
bash
# 每天凌晨 2 點
0 2 * * *
# 每週日凌晨 3 點
0 3 * * 0
# 每月 1 號凌晨 4 點
0 4 1 * *
# 每小時執行
0 * * * *
# 每 30 分鐘執行
*/30 * * * *
# 每週一至週五晚上 11 點
0 23 * * 1-5如果想要在一天內執行多次,可以設定多個時間點:
bash
# 每天早上 6 點和晚上 12 點執行
0 6,0 * * * /Users/eason/Desktop/project/blog/deploy.sh >> /Users/eason/Desktop/project/blog/deploy.log 2>&1管理 crontab 任務#
1. 檢查 crontab 是否設定成功#
bash
crontab -l2. 查看執行日誌#
bash
# 查看最新的日誌
tail -f /Users/eason/Desktop/project/blog/deploy.log
# 查看所有日誌
cat /Users/eason/Desktop/project/blog/deploy.log3. 刪除 crontab 任務#
刪除所有任務:
bash
crontab -r編輯 crontab 手動刪除特定行:
bash
crontab -emacOS 權限問題#
macOS 可能會要求你授權 cron 的執行權限,這邊記錄一下解決的方式:
1. 權限設定#
- 前往「系統偏好設定」>「安全性與隱私」
- 找到選擇「完整磁碟存取權」
- 解鎖並進入編輯模式
- 在「完整磁碟存取權」中加入
cron,路徑應該會在/usr/sbin/底下:
2. 環境變數#
crontab 執行時的環境變數可能與你的終端機不同。如果遇到路徑問題,可以在 crontab 中設定環境變數:
bash
PATH=/usr/local/bin:/usr/bin:/bin
0 0 * * * /Users/eason/Desktop/project/blog/deploy.sh >> /Users/eason/Desktop/project/blog/deploy.log 2>&1結語#
透過設定 crontab 自動化部署,就省去每次都要手動執行的麻煩。
不過要記得:
- 先測試腳本是否正常運行
- 注意 macOS 的權限設定
- 定期去檢查日誌確保都正常執行
確保設定的自動化流程都有如期正常在運行。

