Mac設(shè)置開機啟動
本文針對命令行使用的開發(fā)工具或自己編寫的腳本設(shè)置開機啟動中狂,圖形化界面的程序僅需要
設(shè)置
->用戶與群組
->登錄項
中即可配置热幔。
相比于Linux開機啟動設(shè)置的簡單方便--配置rc.local
文件即可昧谊,mac設(shè)置開機啟動略顯麻煩。
如果是使用homebrew安裝軟件自然不用考慮開機啟動這回事携丁,但有時候想執(zhí)行自己的腳本或者有特殊需求奴拦,就不得不自己處理開機啟動了。
1. 使用登錄項添加可執(zhí)行腳本(推薦)
在用戶的家目錄編寫一個sh腳本垃僚,例如:
test.sh
#!/bin/bash
# 在用戶的家目錄創(chuàng)建一個文件
touch ~/haha.txt
添加可執(zhí)行權(quán)限
chmod 755 test.sh
進入設(shè)置
->用戶與群組
->登錄項
集绰,點+號,選擇test.sh文件即可谆棺。
重啟電腦栽燕,驗證是否新建了文件,如存在說明配置成功改淑,修改該文件內(nèi)容為你想要的配置碍岔。
該文件將會在開機時執(zhí)行,可在命令行中執(zhí)行的開機啟動項均可在此文件中配置朵夏。
PS: 開機后會顯示一個“進程已結(jié)束”的終端蔼啦,不太爽,需要進入終端的
偏好設(shè)置
->shell
選項卡->當(dāng)shell退出時
, 選擇“關(guān)閉窗口”仰猖。這樣開機時就不會出現(xiàn)一個終端了
2. launchctl加載plist文件
macOS開機啟動一般使用launchctl加載plist文件
plist文件放置處:
~/Library/LaunchAgents 由用戶自己定義的任務(wù)項
/Library/LaunchAgents 由管理員為用戶定義的任務(wù)項
/Library/LaunchDaemons 由管理員定義的守護進程任務(wù)項
/System/Library/LaunchAgents 由Mac OS X為用戶定義的任務(wù)項
/System/Library/LaunchDaemons 由Mac OS X定義的守護進程任務(wù)項
建議放在 ~/Library/LaunchAgents 下面捏肢。
下面再來理解幾個基礎(chǔ)概念:
/System/Library和/Library和~/Library目錄的區(qū)別?
/System/Library目錄是存放Apple自己開發(fā)的軟件饥侵。
/Library目錄是系統(tǒng)管理員存放的第三方軟件猛计。
~/Library/是用戶自己存放的第三方軟件。
LaunchDaemons和LaunchAgents的區(qū)別爆捞?
LaunchDaemons是用戶未登陸前就啟動的服務(wù)(守護進程)奉瘤。
LaunchAgents是用戶登陸后啟動的服務(wù)(守護進程)。
plist文件示例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.exampled</string>
<key>ProgramArguments</key>
<array>
<string>exampled</string>
</array>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
launchd.plist的部分鍵值說明煮甥,完整版見launchd.plist(5)
Label (必須)
該項服務(wù)的名稱
ProgramArguments
指定可執(zhí)行文件路徑及其參數(shù)盗温,比如執(zhí)行ls -a
,對應(yīng)到該配置中成肘,應(yīng)該寫作:
<key>ProgramArguments</key>
<array>
<string>ls</string>
<string>-a</string>
</array>
RunAtLoad (可選)
標(biāo)識launchd在加載完該項服務(wù)之后立即啟動路徑指定的可執(zhí)行文件卖局。默認(rèn)值為 false,設(shè)置為 true 即可實現(xiàn)開機運行腳本文件。
StartCalendarInterval (可選)
該關(guān)鍵字可以用來設(shè)置定時執(zhí)行可執(zhí)行程序双霍,可使用 Month, Day, Hour, Minute, Second等子關(guān)鍵字砚偶,它可以指定腳本在多少月,天洒闸,小時染坯,分鐘,秒丘逸,星期幾等時間上執(zhí)行单鹿,若缺少某個關(guān)鍵字則表示任意該時間點,類似于 Unix 的 Crontab 計劃任務(wù)的設(shè)置方式深纲,比如在該例子中設(shè)置為每小時的20分的時候執(zhí)行該命令仲锄。
KeepAlive(可選)
是否保持持續(xù)運行
所有key關(guān)鍵字詳細(xì)使用說明可以在Mac OS X終端下使用命令 man launchd.plist 查詢
檢查plist語法是否正確
plutil ~/Library/LaunchAgents/example.plist
載入配置, 使配置生效
launchctl load ~/Library/LaunchAgents/example.plist
卸載配置
launchctl unload ~/Library/LaunchAgents/example.plist
查看服務(wù)運行狀態(tài)
launchctl list