Comment utiliser les commandes launchctl non «héritées» pour charger et décharger des listes?

14

J'ai quelques fichiers plist dedans ~/Library/LaunchAgents.

J'utilise avec plaisir launchctl load -wet launchctl unload -wj'allume et éteint ces derniers depuis des années. Cependant, je remarque que maintenant loadetunload 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 loadet unloadmais 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 ...

Glyphe
la source
L'héritage signifie qu'un changement est en cours - vous pouvez toujours utiliser le chargement et le déchargement au contenu de votre cœur sur 10.11 et inférieur. Je présume qu'Apple aura de la documentation à la WWDC cette année et un calendrier pour la migration ...
bmike
1
Je suppose qu'il n'y a peut-être pas encore de réponse à cela, mais cela ressemble à enableet disableest destiné à remplacer loadet unload. Je n'arrive pas à les faire travailler comme je m'y attendais.
Glyphe
1
Avez - vous essayé la suite launchctl enableavec launchctl kickstart?
Je ne l'ai pas fait, mais je ne suis pas launchctl kickstartcensé simplement émettre une activation pour le travail en question? J'utilise launchd spécifiquement parce que je veux une activation purement à la demande.
Glyphe
2
Il semble que cela puisse aider: babodee.wordpress.com/2016/04/09/launchctl-2-0-syntax
TJ Luoma

Réponses:

6

J'ai demandé à l'utilisateur Twitter @launchderp :

@launchderp Arelaunchctl load -ce que le déchargement et le déchargement sont toujours sûrs à utiliser, au moins jusqu'au 10.12 ou ce qui vient ensuite?

cf Comment utiliser les commandes launchctl non "héritées" pour charger et décharger des plists?

Et @launchderp a répondu

@tjluoma Oui, ils sont toujours en sécurité. Trop d'années de dépendances pour les briser.

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 launchdpour 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 :-)

TJ Luoma
la source
2
Ne pas marquer comme "accepté" car il ne répond pas tout à fait à la question enableet disablemais a voté parce que j'apprécie toujours les informations :).
Glyphe
1

L'article référé par TJ Luoma est très utile. Étapes pour lancer le démon:

  1. Enregistrez votre fichier plist /Library/LaunchDaemons/comme d'habitude. Disons que le fichier l'est com.example.mysrv.plistet que l'étiquette dans plist l'est com.example.mysrv.
  2. sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist. Notez que le chemin peut être relatif (à $PWD) ou absolu.
  3. Vérifiez le service avec 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.

Franklin Yu
la source