Como uso comandos launchctl não “legados” para carregar e descarregar listas?

13

Eu tenho alguns arquivos plist ~/Library/LaunchAgents.

Eu tenho usado felizmente launchctl load -we launchctl unload -wativá-lo e desativá-lo por anos. No entanto, percebo isso agora loade estou unloadrelegado à seção "legado" da página de manual. Vamos ligar para um deles com.example.service.plist.

No entanto, quando tento interagir com essas listas via launchctl enable "gui/$(id -u)/com.example.service"e launchctl disable "gui/$(id -u)/com.example.service", outros comandos launchd parecem relatar sucesso - por exemplo, launchctl print "gui/$(id -u)"mostra-me totalmente sinalizadores desativados que correspondem ao estado que defini - os serviços na verdade não iniciam e param ou ouça e ouça suas portas.

Há algum passo que estou perdendo? No momento, eu estou aderindo loade, unloadmas gostaria de aprender a maneira não obsoleta de interagir com essas coisas antes que a Apple eventualmente bata a porta da maneira antiga / ruim ...

Glifo
fonte
O legado significa que uma mudança está em andamento - você ainda pode usar carregar e descarregar no conteúdo do seu coração nas versões 10.11 e inferiores. Minha suposição é a Apple terá a documentação na WWDC deste ano e um cronograma para a migração ...
bmike
1
Eu acho que não só não pode ser uma resposta para isso ainda, mas com certeza olhares como enablee disablese destinam a substituir loade unload. Eu simplesmente não consigo fazê-los funcionar como eu esperava.
glifos
1
Você já tentou seguir launchctl enablecom launchctl kickstart?
Não, mas não launchctl kickstartdevo apenas emitir uma ativação para o trabalho em questão? Estou usando o launchd especificamente porque quero uma ativação puramente sob demanda.
Glyph
2
Parece que isso pode ajudar: babodee.wordpress.com/2016/04/09/launchctl-2-0-syntax
TJ Luoma

Respostas:

6

Perguntei ao usuário do Twitter @launchderp :

@launchderp O launchctl loaddescarregamento e o descarregamento ainda são seguros, pelo menos até as 10h12 ou o que vier a seguir?

cf Como eu uso comandos launchctl não "legados" para carregar e descarregar listas?

E @launchderp respondeu

@tjluoma Sim, eles ainda estão seguros. Muitos anos de dependências para quebrá-las.

Embora isso possa não parecer uma declaração oficial da Apple, acredito que essa pessoa seja alguém que está trabalhando ativamente na launchdApple e confie no que eles dizem. YMMV.

Moral da história: se o carregamento / descarregamento estiver funcionando para você, continue usando-os :-)

TJ Luoma
fonte
2
Não marcar como "aceito", porque não aborda bem a questão enablee foi disablevotado porque ainda aprecio as informações :).
Glyph #
1

O artigo referido por TJ Luoma é muito útil. Etapas para iniciar o Daemon:

  1. Salve seu arquivo plist /Library/LaunchDaemons/como de costume. Digamos que o arquivo seja com.example.mysrv.pliste o Label em plist é com.example.mysrv.
  2. sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist. Observe que o caminho pode ser relativo (a $PWD) ou absoluto.
  3. Verifique o serviço com sudo launchctl print system/com.example.mysrv. Deveria dizer "correndo".

Os agentes de lançamento devem ser semelhantes. Advertência: Não tenho idéia de como interromper um serviço sem descarregá-lo bootout.

Franklin Yu
fonte