2015-07-03 109 views
10

在OS X Yosemite(10.10)上,是否有任何方法可以刪除服務的啓用/禁用覆蓋設置?launchctl - 刪除啓用/禁用覆蓋

例如,要永久禁用不存在的服務「試驗」的根,這樣做:

sudo launchctl disable user/0/test 

檢查,它已被添加到傷兵名單:

sudo launchctl print-disabled user/0 

結果:

disabled services = { 
    "test" => true 
} 
login item associations = { 
} 

現在,我該如何從已禁用的服務列表中刪除「測試」?

(我知道我可以啓用它,但我只是想完全刪除的條目。)

注:

如果我重新啓動我的電腦,我看到了「測試」超控被添加到一個launchd disabled文件:

sudo cat /var/db/com.apple.xpc.launchd/disabled.0.plist 

結果:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>test</key> 
    <true/> 
</dict> 
</plist> 

我試圖運行此命令從.plist文件手動刪除它:

sudo /usr/libexec/Plistbuddy /var/db/com.apple.xpc.launchd/disabled.0.plist -c Delete:test 

這並從文件中刪除它,但它只是再回來,當我重新啓動我的電腦。有任何想法嗎?

+0

以下是對類似主題的討論:http://comments.gmane.org/gmane.comp.sysutils.launchd.devel/117 –

回答

5

我剛剛在優勝美地解決了LaunchControl的這個問題... 它必須具有令人驚歎的GUI,用於在OSX上管理守護進程和代理。 它有很多的功能... 所以只是木桶安裝

$ brew cask install launchcontrol 

然後在左邊的列表中找到您的服務(下使用代理或全局守護程序或任何...)。

選擇它,並在主菜單中去工作=>覆蓋禁用鍵=>總是假

然後重新啓動並檢查... 應該努力!

+1

您所描述的是如何使用LaunchControl永久啓用服務。這不是海報問的問題。他在找的是Job> Override Disabled Key> Do not Override,這在OSX Yosemite上還沒有工作。 – LCC

+1

@LCC我把這個bug /我的解決方案報告給了[email protected],LaunchControl的開發人員(其中有人) –

+1

@LCC BTW,開發人員報告說「不會修復」/「無法修復」狀態re:這個_un-feature_。 –

5

好像曾經是在overrides.plist改變了信息的本質..

根據launchctlman頁的‘遺產’load/unload子命令..

-w覆蓋Disabled鍵,並分別將其設置爲false或true以用於加載和卸載子命令。在以前的版本中,該選項會修改配置文件。現在,Disabled鍵的狀態存儲在其他磁盤上的某個位置,該位置可能不是由launchd以外的任何進程直接操作的位置。

我想現在...信息存儲在/var/db/com.apple.xpc.launchd目錄中。

我的內容包含幾個plists。

config disabled.0.plist disabled.200.plist ... disabled.501.plist ... disabled.migrated loginitems.0.plist ... loginitems.501.plist ...

在這種情況下,文件名是指不同用戶的ID(5010)。更改這些文件中的密鑰(顯然是root)應該使用黑暗霸主launchd刪除相應的覆蓋項。

如果沒有,嘗試編輯這些相同的文件,同時啓動恢復或其他驅動器 - 所以你可以惹他們,而launchd沒有運行/無情地試圖成爲老闆。

+0

'黑暗霸主'發射''...這太好了。散文+1。 – voidnologo

0

我能夠做到這一點使用單用戶模式。步驟如下:

  1. 關閉計算機。
  2. 啓動時,進入單用戶模式(Command + S)。
  3. 從命令行輸入/sbin/mount -uw /
  4. 根據需要編輯合適的/var/db/com.apple.xpc.launchd/disabled.*.plist文件,刪除禁用的項目。
  5. 類型exit