2015-07-03 3 views
10

В OS X Yosemite (10.10) есть ли способ удалить параметр включения/отключения переопределения для службы?launchctl - удалить включено/отключено override

Например, чтобы окончательно отключить несуществующий сервис «тест» для суперпользователя, сделайте следующее:

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 на yosemite ... его должен иметь удивительный маленький графический интерфейс для управления вашими демонами и агентами на OSX. Он имеет много возможностей ... Так что просто установить его с бочкой

$ brew cask install launchcontrol 

затем найти свою службу (при использования агентов или Global Демонов или любой другой ...) в списке слева.

Выберите его и в главном меню выберите Работа => Override ключ Disabled => Всегда Ложный

Затем перезагрузиться и проверить ... Должно работать!

+1

Что вы описываете, как постоянно активировать услугу с помощью LaunchControl. Это не то, что спросил плакат. То, что он ищет, это Job> Override Disabled Key> Do not Override, который еще не работает на OSX Yosemite. – LCC

+1

@LCC Я сообщил об этой ошибке/моем решении [email protected], разработчик LaunchControl (который скалы) –

+1

@LCC BTW, разработчик сообщил, что статус 'не будет исправлен' /' не может исправить' re: this _un-feature_. –

5

Похоже, природа информации, которая раньше была в overrides.plist изменилось ..

Согласно launchctl «s man страницы для„наследство“load/unload суб-команд ..

-w Переопределяет клавишу «Отключено» и устанавливает ее значение false или true для подкоманд загрузки и выгрузки соответственно. В предыдущих версиях эта опция изменила бы конфигурационный файл. Теперь состояние ключа «Отключено» сохраняется в другом месте на диске в месте, которое не может быть напрямую обработано каким-либо другим процессом, кроме запуска.

Я думаю, теперь ... информация хранится в каталоге /var/db/com.apple.xpc.launchd.

Содержимое моей содержит несколько слоев.

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

В этом случае имена файлов имеют в виде различных пользователей идентификаторов (501 быть шахта, 0 быть корнем). Изменение ключей в этих файлах (как root, очевидно) СЛЕДУЕТ удалить соответствующие переопределения с помощью dark-overlord launchd.

Если нет, попробуйте отредактировать эти же файлы при загрузке до восстановления или какой-либо другой диск, так как вы можете общаться с ними, пока launchd не работает/неустанно пытается быть боссом.

+0

'dark-overlord 'launchd'' ... Это здорово. +1 для прозы. – voidnologo

0

Я был в состоянии сделать это с помощью Одиночный пользовательский режим. Этапы:

  1. Завершите работу компьютера.
  2. При запуске введите однопользовательский режим (Command + S).
  3. Из командной строки, тип /sbin/mount -uw /
  4. Редактировать соответствующий файл /var/db/com.apple.xpc.launchd/disabled.*.plist, удаляя ненужные элементы, по желанию.
  5. Тип exit.