2015-07-03 32 views
10

Na OS X Yosemite (10.10), czy istnieje sposób na usunięcie włączonego/wyłączonego ustawienia zastąpienia dla usługi?launchctl - usuń włączone/wyłączone przesłonięcie

Na przykład, aby na stałe wyłączyć nieistniejącego serwis 'test' root, to zrobić:

sudo launchctl disable user/0/test 

Sprawdź, czy została ona dodana do listy osób niepełnosprawnych:

sudo launchctl print-disabled user/0 

Wynik:

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

Jak mogę usunąć "test" z listy wyłączonych usług?

(wiem, że można go włączyć, ale po prostu chcesz usunąć wpis w całości).

Uwaga:

Gdybym ponownie uruchomić komputer, widzę, że „test” sterowaniu został dodany do launchd disabled pliku:

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

Wynik:

<?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> 

Próbowałem uruchomieniem tego polecenia, aby ręcznie usunąć go z pliku .plist:

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

To powoduje usunięcia jej z akt sprawy, ale to po prostu wraca ponownie po ponownym uruchomieniu komputera. Jakieś pomysły?

+0

Oto dyskusja na podobny temat: http://comments.gmane.org/gmane.comp.sysutils.launchd.devel/117 –

Odpowiedz

5

Właśnie rozwiązałem ten problem z LaunchControl na Yosemite ... to musi mieć niesamowity mały GUI do zarządzania demonami i agentami na OSX. Posiada wiele funkcji ... Więc po prostu zainstalować go z beczki

$ brew cask install launchcontrol 

następnie znaleźć swoją usługę (pod pełnomocników użycie lub globalne Daemons lub cokolwiek ...) na liście po lewej stronie.

Zaznacz go i w menu głównym przejść do pracy => Zastąp klucz disabled => zawsze fałszywe

Następnie uruchom ponownie i sprawdzić ... Powinna działać!

+1

To, co opisujesz, to jak na stałe włączyć usługę za pomocą LaunchControl. Nie o to pytał plakat. To, czego szuka, to Job> Override Disabled Key> Nie zastępuj, który nie działa jeszcze na OS X Yosemite. – LCC

+1

@LCC Zgłosiłem ten błąd/moje rozwiązanie do [email protected], programisty LaunchControl (który kołysze) –

+1

@LCC BTW, programista zgłosił status "nie naprawi"/'nie może naprawić' re: this _un-feature_. –

5

Wygląda na charakter informacji, które były w overrides.plist zmieniła ..

Według launchctl „s man strony za«dziedzictwo»load/unload podkomendy ..

-w Zastępuje klucz wyłączony i ustawia go na wartość false lub true, odpowiednio dla komend ładowania i usuwania. W poprzednich wersjach ta opcja modyfikowałaby plik konfiguracyjny. Teraz stan klawisza Disabled jest przechowywany w innym miejscu na dysku w miejscu, które nie może być bezpośrednio manipulowane przez żaden proces inny niż launchd.

Zgaduję, że teraz ... informacje są przechowywane w katalogu /var/db/com.apple.xpc.launchd.

Zawartość kopalni zawierała kilka plistów.

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

W tym przypadku, nazwy plików są odwołując się do różnych użytkowników id-tych (501 będąc kopalnia, 0 będąc korzeń). Zmieniając klucze w tych plikach (oczywiście jako root) POWINIEN usunąć odpowiednie przesłonięcia z ciemnymi panami launchd.

Jeśli nie, spróbuj edytować te same pliki podczas uruchamiania z odzyskiwaniem lub inny dysk - tak, aby można było z nich zadzierać, podczas gdy launchd nie działa/nieustępliwie próbuje być szefem.

+0

"Ciemny Overlord" launchd' "... To świetnie. +1 dla prozy. – voidnologo

0

Udało mi się to zrobić przy użyciu trybu pojedynczego użytkownika . Kroki są następujące:

  1. Wyłącz komputer.
  2. Po uruchomieniu przejdź do trybu pojedynczego użytkownika (Command + S).
  3. W wierszu poleceń wpisz: /sbin/mount -uw /
  4. Edytuj odpowiedni plik /var/db/com.apple.xpc.launchd/disabled.*.plist, usuwając wyłączone elementy, zgodnie z potrzebami.
  5. Wpisz exit.