Eu tenho alguns arquivos plist ~/Library/LaunchAgents
.
Eu tenho usado felizmente launchctl load -w
e launchctl unload -w
ativá-lo e desativá-lo por anos. No entanto, percebo isso agora load
e estou unload
relegado à 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 load
e, unload
mas 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 ...
enable
edisable
se destinam a substituirload
eunload
. Eu simplesmente não consigo fazê-los funcionar como eu esperava.launchctl enable
comlaunchctl kickstart
?launchctl kickstart
devo apenas emitir uma ativação para o trabalho em questão? Estou usando o launchd especificamente porque quero uma ativação puramente sob demanda.Respostas:
Perguntei ao usuário do Twitter @launchderp :
E @launchderp respondeu
Embora isso possa não parecer uma declaração oficial da Apple, acredito que essa pessoa seja alguém que está trabalhando ativamente na
launchd
Apple e confie no que eles dizem. YMMV.Moral da história: se o carregamento / descarregamento estiver funcionando para você, continue usando-os :-)
fonte
enable
e foidisable
votado porque ainda aprecio as informações :).O artigo referido por TJ Luoma é muito útil. Etapas para iniciar o Daemon:
/Library/LaunchDaemons/
como de costume. Digamos que o arquivo sejacom.example.mysrv.plist
e o Label em plist écom.example.mysrv
.sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist
. Observe que o caminho pode ser relativo (a$PWD
) ou absoluto.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
.fonte