macOS High Sierra

於特定時間執行 Shell 工序指令
若要排程 Shell 工序指令於特定時間執行,請使用 launchd
或 cron
。
以 launchd 排程作業
使用
launchd
,而非cron
來排程作業。使用launchd
時,若作業因為電腦關機或睡眠而遭略過,作業會在電腦返回線上時加入佇列。若使用
launchd
來排程以計時器為基準的工作,請使用StartCalendarInterval
或StartInterval
鍵值。如需
launchd
的相關資訊,請參閱其 man 頁面。
使用 cron 來排程作業
cron
服務程式會執行 crontab 檔案中所定義的排程指令。cron
服務程式會在 /usr/lib/cron/tabs/ 檔案夾中搜尋 crontab 檔案(這些檔案是依 /etc/passwd 中的帳號命名),並將檔案載入記憶體。cron
服務程式也會在 /etc/crontab/ 檔案夾中搜尋 crontab 檔案,這些檔案的格式不盡相同。cron
隨後會每分鐘循環運作、檢驗儲存的 crontab 檔案和檢查每個指令,以查看其是否應在目前分鐘內執行。
當指令執行時,輸出內容會寄送給 crontab 檔案的擁有者或 crontab 檔案中之 MAILTO 環境變數(選擇性)中指定的使用者。
您可使用 crontab
工具來安裝、解除安裝或列出用來驅動 cron
服務程式的表格。使用者可以具有自己的 crontab 檔案。
若要設定您的 crontab 檔案,請使用
crontab -e
指令。這會以編輯模式來打開一個空白 crontab 檔案。以下是要 crontab 檔案的範例:
SHELL=/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
#min hour mday month wday command
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
50 23 * * 0 diskutil repairVolume /Volumes/MacHD
在此範例中,第一個項目會於星期一到星期五每天 18:30 分修復 MacHD 卷宗的磁碟權限:
30 18 * * 1-5 diskutil repairPermissions /Volumes/MacHD
第二個項目會將修復卷宗的作業排程在每個星期天的 23:50 執行:
50 23 * * 0 diskutil repairVolume /Volumes/MacHD