24 votes

Comment utiliser des commandes launchctl non "traditionnelles" pour charger et décharger des listes de diffusion ?

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

J'ai été heureux d'utiliser launchctl load -w y launchctl unload -w pour les allumer et les éteindre pendant des années. Cependant, je remarque que maintenant load y unload sont relégués à la section "legacy" de la page de manuel. Appelons l'un d'entre eux com.example.service.plist .

Cependant, lorsque j'essaie d'interagir avec ces listes par l'intermédiaire de launchctl enable "gui/$(id -u)/com.example.service" y launchctl disable "gui/$(id -u)/com.example.service" d'autres commandes de launchd semblent pour signaler un succès - par exemple, launchctl print "gui/$(id -u)" m'indique totalement les drapeaux désactivés qui correspondent à l'état que j'ai défini - les services ne démarrent et n'arrêtent pas réellement ou n'écoutent et n'écoutent pas sur leurs ports.

Est-ce qu'il y a une étape que je manque ? Pour le moment, je m'en tiens à load y unload mais j'aimerais apprendre la façon non dépréciée d'interagir avec ce truc avant qu'Apple ne claque la porte de l'ancienne/mauvaise façon...

8voto

moodforaday Points 2633

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

@launchderp Are launchctl load et unload sont toujours sûrs, au moins jusqu'à la 10.12 ou la prochaine version ?

c.f Comment utiliser des commandes launchctl non "traditionnelles" pour charger et décharger des listes de diffusion ?

Et @launchderp a répondu

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

Bien que cela ne semble pas être une déclaration officielle d'Apple, je pense que cette personne est quelqu'un qui travaille activement sur launchd pour Apple, et faites confiance à ce qu'ils disent. YMMV.

Morale de l'histoire : Si le chargement/déchargement fonctionne pour vous, continuez à l'utiliser :-)

6voto

Franklin Yu Points 493

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

  1. Enregistrez votre fichier plist dans /Library/LaunchDaemons/ comme d'habitude. Disons que le fichier est com.example.mysrv.plist et l'étiquette dans la liste est com.example.mysrv .
  2. sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist . Notez que le chemin peut être relatif (vers $PWD ) ou absolue.
  3. Vérifiez le service avec sudo launchctl print system/com.example.mysrv . Il devrait être écrit "running".

Les agents de lancement devraient être similaires. Avertissement : Je n'ai aucune idée de la manière d'arrêter un service sans le décharger par le biais de bootout .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X