macOS 系統(tǒng)的啟動(dòng)項(xiàng)會(huì)以 .plist 的文件存在于以下目錄中:
-
/Library/LaunchDaemons:系統(tǒng)啟動(dòng)時(shí)運(yùn)行,用戶不登錄也會(huì)運(yùn)行。 -
/Library/LaunchAgents:用戶登錄后運(yùn)行。 -
~/Library/LaunchAgents:用戶自定義的用戶啟動(dòng)項(xiàng) -
/System/Library/LaunchDaemons:系統(tǒng)自帶的啟動(dòng)項(xiàng) -
/System/Library/LaunchAgents:系統(tǒng)自帶的啟動(dòng)項(xiàng)
每個(gè) .plist 文件中,有 3 個(gè)屬性控制著是否會(huì)開機(jī)自動(dòng)啟動(dòng)。
-
KeepAlive:決定程序是否需要一直運(yùn)行,如果是 false 則需要時(shí)才啟動(dòng)。默認(rèn) false -
RunAtLoad:開機(jī)時(shí)是否運(yùn)行。默認(rèn) false。 -
SuccessfulExit:此項(xiàng)為 true 時(shí),程序正常退出時(shí)重啟(即退出碼為 0);為 false 時(shí),程序非正常退出時(shí)重啟。此項(xiàng)設(shè)置時(shí)會(huì)隱含默認(rèn) RunAtLoad = true,因?yàn)槌绦蛐枰辽龠\(yùn)行一次才能獲得退出狀態(tài)。
所以其實(shí)針對(duì)這三項(xiàng),不同的值有不同的表現(xiàn):
如果
KeepAlive= false:當(dāng)
RunAtLoad= false 時(shí):程序只有在有需要的時(shí)候運(yùn)行。當(dāng)
RunAtLoad= true 時(shí):程序在啟動(dòng)時(shí)會(huì)運(yùn)行一次,然后等待在有需要的時(shí)候運(yùn)行。當(dāng)
SuccessfulExit= true / false 時(shí):不論RunAtLoad值是什么,都會(huì)在啟動(dòng)時(shí)運(yùn)行一次。其后根據(jù)SuccessfulExit值來(lái)決定是否重啟。如果
KeepAlive= true :不論
RunAtLoad/SuccessfulExit值是什么,都會(huì)啟動(dòng)時(shí)運(yùn)行且一直保持運(yùn)行狀態(tài)。
如果不希望開機(jī)自動(dòng)運(yùn)行,則需要:
1. 找到對(duì)應(yīng)程序的 .plist 文件
2. 刪除 SuccessfulExit 屬性。
3. 將 RunAtLoad / KeepAlive 均設(shè)為 <false/>