Launchctctl - удалить включено/отключено
В OS X Yosemite (10.10) есть ли способ удалить параметр активированного/отключенного переопределения для службы?
Например, чтобы навсегда отключить несуществующий сервис 'test' для root, сделайте следующее:
sudo launchctl disable user/0/test
Убедитесь, что он добавлен в список отключенных:
sudo launchctl print-disabled user/0
Результат:
disabled services = {
"test" => true
}
login item associations = {
}
Теперь, как я могу удалить "тест" из списка отключенных служб?
(Я знаю, что могу включить его, но просто хочу полностью удалить запись.)
Примечание:
Если я перезагружу свой компьютер, я вижу, что переопределение "test" было добавлено в файл 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
Это удалит его из файла, но он снова возвращается, когда я перезагружаю компьютер. Любые идеи?
Ответы
Ответ 1
Я только что решил эту проблему с LaunchControl на yosemite...
его должен иметь удивительный маленький графический интерфейс для управления вашими демонами и агентами на OSX.
В нем много функций...
Так что просто установите его с помощью cask
$ brew cask install launchcontrol
затем найдите свою службу (в разделе "Использование агентов или глобальных демонов" или что-то еще...) в списке слева.
Выберите его и в главном меню перейдите к Job = > Переопределить Отключенную клавишу = > Всегда False
Затем перезагрузитесь и проверьте...
Должен работать!
Ответ 2
Похоже, что изменилась природа информации, которая была в overrides.plist
.
В соответствии с launchctl
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
my, 0
- root). Изменение ключей в этих файлах (как root, очевидно) СЛЕДУЕТ удалить соответствующие переопределения с помощью dark-overlord launchd
.
Если нет, попробуйте отредактировать эти же файлы при загрузке до восстановления или какой-нибудь другой диск - так что вы можете возиться с ними, пока launchd
не работает/неустанно пытается быть боссом.
Ответ 3
Я смог сделать это, используя Single User Mode. Шаги:
- Выключите компьютер.
- При запуске введите однопользовательский режим (Command + S).
- В командной строке введите
/sbin/mount -uw /
- Отредактируйте соответствующий файл
/var/db/com.apple.xpc.launchd/disabled.*.plist
, удалив отключенные элементы, по желанию.
- Введите
exit
.