У меня есть некоторые файлы plist ~/Library/LaunchAgents
.
Я с удовольствием пользуюсь launchctl load -w
и launchctl unload -w
включаю и выключаю их годами. Тем не менее, я заметил, что сейчас load
и unload
переведен в раздел «наследие» на странице руководства. Давайте назовем одного из них com.example.service.plist
.
Однако, когда я пытаюсь взаимодействовать с этими списками через launchctl enable "gui/$(id -u)/com.example.service"
и launchctl disable "gui/$(id -u)/com.example.service"
, другие команды запуска, кажется, сообщают об успехе - например, launchctl print "gui/$(id -u)"
полностью показывает мне отключенные флаги, которые соответствуют состоянию, которое я установил - службы фактически не запускаются и не останавливаются или слушать и не слушать их порты.
Есть ли какой-то шаг, который я пропускаю? На данный момент я придерживаюсь load
и, unload
но я хотел бы изучить не осуждаемый способ взаимодействия с этим материалом, прежде чем Apple в конечном итоге захлопнет дверь по старому / плохому пути ...
enable
иdisable
предназначена для заменыload
иunload
. Я просто не могу заставить их работать так, как я ожидаю.launchctl enable
сlaunchctl kickstart
?launchctl kickstart
должен просто выпустить активацию для рассматриваемой работы? Я использую launchd специально, потому что я хочу активировать только по требованию.Ответы:
Я спросил пользователя Твиттера @launchderp :
И @launchderp ответил
Хотя это может показаться не официальным заявлением Apple, я считаю, что этот человек активно работает над
launchd
Apple и доверяет тому, что они говорят. YMMV.Мораль истории: если загрузка / выгрузка работает на вас, продолжайте использовать их :-)
источник
enable
иdisable
а upvoted , потому что я до сих пор ценю информацию :).Статья, упомянутая TJ Luoma, очень полезна. Шаги для запуска демона:
/Library/LaunchDaemons/
как обычно. Допустим, файл естьcom.example.mysrv.plist
, а метка в plist естьcom.example.mysrv
.sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist
, Обратите внимание, что путь может быть относительным (к$PWD
) или абсолютным.sudo launchctl print system/com.example.mysrv
. Стоит сказать «работает».Агенты запуска должны быть похожими. Предостережение: я понятия не имею, как остановить службу, не выгружая ее
bootout
.источник