J'ai quelques fichiers plist dedans ~/Library/LaunchAgents
.
J'utilise avec plaisir launchctl load -w
et launchctl unload -w
j'allume et éteint ces derniers depuis des années. Cependant, je remarque que maintenant load
etunload
relégué dans la section "héritage" de la page de manuel. Appelons l'un d'eux com.example.service.plist
.
Cependant, lorsque j'essaie d'interagir avec ces plists via launchctl enable "gui/$(id -u)/com.example.service"
et launchctl disable "gui/$(id -u)/com.example.service"
, d'autres commandes launchd semblent signaler un succès - par exemple, launchctl print "gui/$(id -u)"
me montre totalement les indicateurs désactivés qui correspondent à l'état que j'ai défini - les services ne démarrent et ne s'arrêtent pas réellement ou écouter et ne pas écouter sur leurs ports.
Y a-t-il une étape qui me manque? Pour le moment, je m'en tiens load
et unload
mais j'aimerais apprendre la manière non obsolète d'interagir avec ce genre de choses avant qu'Apple ne claque finalement la porte sur l'ancienne / mauvaise façon ...
enable
etdisable
est destiné à remplacerload
etunload
. Je n'arrive pas à les faire travailler comme je m'y attendais.launchctl enable
aveclaunchctl kickstart
?launchctl kickstart
censé simplement émettre une activation pour le travail en question? J'utilise launchd spécifiquement parce que je veux une activation purement à la demande.Réponses:
J'ai demandé à l'utilisateur Twitter @launchderp :
Et @launchderp a répondu
Bien que cela ne puisse pas sembler être une déclaration officielle d'Apple, je pense que cette personne est une personne qui travaille activement
launchd
pour Apple, et j'ai confiance en ce qu'elle dit. YMMV.Morale de l'histoire: si le chargement / déchargement fonctionne pour vous, continuez à les utiliser :-)
la source
enable
etdisable
mais a voté parce que j'apprécie toujours les informations :).L'article référé par TJ Luoma est très utile. Étapes pour lancer le démon:
/Library/LaunchDaemons/
comme d'habitude. Disons que le fichier l'estcom.example.mysrv.plist
et que l'étiquette dans plist l'estcom.example.mysrv
.sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist
. Notez que le chemin peut être relatif (à$PWD
) ou absolu.sudo launchctl print system/com.example.mysrv
. Il devrait dire "courir".Les agents de lancement doivent être similaires. Avertissement: je ne sais pas comment arrêter un service sans le décharger
bootout
.la source