mac將使用launchctl做為開機啟動工具,launchctl將根據plist文件的信息來啟動任務。plist腳本一般存放在以下目錄:
l /Library/LaunchDaemons -->只要系統啟動了,哪怕用戶不登陸系統也會被執行
l /Library/LaunchAgents -->當用戶登陸系統后才會被執行
~/Library/LaunchAgents 由用戶自己定義的任務項
/Library/LaunchAgents 由管理員為用戶定義的任務項
/Library/LaunchDaemons 由管理員定義的守護進程任務項
/System/Library/LaunchAgents 由Mac OS X為用戶定義的任務項
/System/Library/LaunchDaemons 由Mac OS X定義的守護進程任務項
launchctl 常用命令:
# 加載任務, -w選項會將plist文件中無效的key覆蓋掉,建議加上
$ launchctl load -w com.demo.plist
# 刪除任務
$ launchctl unload -w com.demo.plist
# 查看任務列表, 使用 grep '任務部分名字' 過濾
$ launchctl list | grep 'com.demo'
# 開始任務
$ launchctl start com.demo.plist
# 結束任務
$ launchctl stop com.demo.plist
如果任務唄修改了,那么必須先unload,然后重新loadstart可以測試任務,這個是立即行,不管時間到了沒有執行start和unload前,任務必須先load過,否則報錯stop可以停止任務
plist支持兩種方式配置執行時間:
StartInterval: 指定腳本每間隔多長時間(單位:秒)執行一次;
StartCalendarInterval: 可以指定腳本在多少分鍾、小時、天、星期幾、月時間上執行,類似如crontab的中的設置,包含下面的 key:
Minute <integer> The minute on which this job will be run. Hour <integer> The hour on which this job will be run. Day <integer> The day on which this job will be run. Weekday <integer> The weekday on which this job will be run (0 and 7 are Sunday). Month <integer> The month on which this job will be run.
plist部分參數說明:
Label:對應的需要保證全局唯一性;
Program:要運行的程序;
ProgramArguments:命令語句
StartCalendarInterval:運行的時間,單個時間點使用dict,多個時間點使用 array <dict>
StartInterval:時間間隔,與StartCalendarInterval使用其一,單位為秒
StandardInPath、StandardOutPath、StandardErrorPath:標准的輸入輸出錯誤文件,這里建議不要使用 .log 作為后綴,會打不開里面的信息。
定時啟動任務時,如果涉及到網絡,但是電腦處於睡眠狀態,是執行不了的,這個時候,可以定時的啟動屏幕就好了。
