Mac設(shè)置開(kāi)機(jī)啟動(dòng)

Mac設(shè)置開(kāi)機(jī)啟動(dòng)

本文針對(duì)命令行使用的開(kāi)發(fā)工具或自己編寫(xiě)的腳本設(shè)置開(kāi)機(jī)啟動(dòng),圖形化界面的程序僅需要設(shè)置->用戶與群組->登錄項(xiàng)中即可配置。

相比于Linux開(kāi)機(jī)啟動(dòng)設(shè)置的簡(jiǎn)單方便--配置rc.local文件即可,mac設(shè)置開(kāi)機(jī)啟動(dòng)略顯麻煩。

如果是使用homebrew安裝軟件自然不用考慮開(kāi)機(jī)啟動(dòng)這回事,但有時(shí)候想執(zhí)行自己的腳本或者有特殊需求,就不得不自己處理開(kāi)機(jī)啟動(dòng)了。

1. 使用登錄項(xiàng)添加可執(zhí)行腳本(推薦)

在用戶的家目錄編寫(xiě)一個(gè)sh腳本,例如:

test.sh

#!/bin/bash

# 在用戶的家目錄創(chuàng)建一個(gè)文件
touch ~/haha.txt

添加可執(zhí)行權(quán)限

chmod 755 test.sh

進(jìn)入設(shè)置->用戶與群組->登錄項(xiàng),點(diǎn)+號(hào),選擇test.sh文件即可。

重啟電腦,驗(yàn)證是否新建了文件,如存在說(shuō)明配置成功,修改該文件內(nèi)容為你想要的配置。

該文件將會(huì)在開(kāi)機(jī)時(shí)執(zhí)行,可在命令行中執(zhí)行的開(kāi)機(jī)啟動(dòng)項(xiàng)均可在此文件中配置。

PS: 開(kāi)機(jī)后會(huì)顯示一個(gè)“進(jìn)程已結(jié)束”的終端,不太爽,需要進(jìn)入終端的偏好設(shè)置->shell選項(xiàng)卡->當(dāng)shell退出時(shí), 選擇“關(guān)閉窗口”。這樣開(kāi)機(jī)時(shí)就不會(huì)出現(xiàn)一個(gè)終端了

2. launchctl加載plist文件

macOS開(kāi)機(jī)啟動(dòng)一般使用launchctl加載plist文件

plist文件放置處:

~/Library/LaunchAgents 由用戶自己定義的任務(wù)項(xiàng)
/Library/LaunchAgents 由管理員為用戶定義的任務(wù)項(xiàng)
/Library/LaunchDaemons 由管理員定義的守護(hù)進(jìn)程任務(wù)項(xiàng)
/System/Library/LaunchAgents 由Mac OS X為用戶定義的任務(wù)項(xiàng)
/System/Library/LaunchDaemons 由Mac OS X定義的守護(hù)進(jìn)程任務(wù)項(xiàng)

建議放在 ~/Library/LaunchAgents 下面。

下面再來(lái)理解幾個(gè)基礎(chǔ)概念:

/System/Library和/Library和~/Library目錄的區(qū)別?

/System/Library目錄是存放Apple自己開(kāi)發(fā)的軟件。
/Library目錄是系統(tǒng)管理員存放的第三方軟件。
~/Library/是用戶自己存放的第三方軟件。

LaunchDaemons和LaunchAgents的區(qū)別?

LaunchDaemons是用戶未登陸前就啟動(dòng)的服務(wù)(守護(hù)進(jìn)程)。
LaunchAgents是用戶登陸后啟動(dòng)的服務(wù)(守護(hù)進(jìn)程)。

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的部分鍵值說(shuō)明,完整版見(jiàn)launchd.plist(5)

Label (必須)

該項(xiàng)服務(wù)的名稱

ProgramArguments

指定可執(zhí)行文件路徑及其參數(shù),比如執(zhí)行ls -a,對(duì)應(yīng)到該配置中,應(yīng)該寫(xiě)作:

<key>ProgramArguments</key>
<array>
     <string>ls</string>         
     <string>-a</string>
</array>

RunAtLoad (可選)

標(biāo)識(shí)launchd在加載完該項(xiàng)服務(wù)之后立即啟動(dòng)路徑指定的可執(zhí)行文件。默認(rèn)值為 false,設(shè)置為 true 即可實(shí)現(xiàn)開(kāi)機(jī)運(yùn)行腳本文件。

StartCalendarInterval (可選)

該關(guān)鍵字可以用來(lái)設(shè)置定時(shí)執(zhí)行可執(zhí)行程序,可使用 Month, Day, Hour, Minute, Second等子關(guān)鍵字,它可以指定腳本在多少月,天,小時(shí),分鐘,秒,星期幾等時(shí)間上執(zhí)行,若缺少某個(gè)關(guān)鍵字則表示任意該時(shí)間點(diǎn),類似于 Unix 的 Crontab 計(jì)劃任務(wù)的設(shè)置方式,比如在該例子中設(shè)置為每小時(shí)的20分的時(shí)候執(zhí)行該命令。

KeepAlive(可選)

是否保持持續(xù)運(yùn)行

所有key關(guān)鍵字詳細(xì)使用說(shuō)明可以在Mac OS X終端下使用命令 man launchd.plist 查詢

檢查plist語(yǔ)法是否正確

plutil ~/Library/LaunchAgents/example.plist

載入配置, 使配置生效

launchctl load ~/Library/LaunchAgents/example.plist

卸載配置

launchctl unload ~/Library/LaunchAgents/example.plist

查看服務(wù)運(yùn)行狀態(tài)

launchctl list
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容