¿Cómo uso los comandos launchctl no "heredados" para cargar y descargar plists?

12

Tengo algunos archivos plist en ~/Library/LaunchAgents .

Felizmente he estado usando launchctl load -w y launchctl unload -w para activar y desactivar estos durante años. Sin embargo, observo que ahora load y unload están relegados a la sección "heredada" de la página del manual. Llamemos a uno de ellos com.example.service.plist .

Sin embargo, cuando trato de interactuar con estos errores a través de launchctl enable "gui/$(id -u)/com.example.service" y launchctl disable "gui/$(id -u)/com.example.service" , otros comandos launchd parecen para informar sobre el éxito, por ejemplo, launchctl print "gui/$(id -u)" me muestra los indicadores deshabilitados que corresponden en el estado que he establecido, los servicios no se inician, ni se escuchan y dejan de escuchar en sus puertos.

¿Me falta algún paso? Por el momento me quedo con load y unload , pero me gustaría aprender la forma no desaprobada de interactuar con estas cosas antes de que Apple finalmente cierre la puerta a la antigua / mala manera ...

    
pregunta Glyph 04.02.2016 - 21:02

2 respuestas

5

Le pregunté al usuario de Twitter @launchderp :

  

@launchderp ¿Son seguros y se siguen utilizando launchctl load , al menos hasta la versión 10.12 o lo que venga después?

     

cf ¿Cómo utilizo comandos launchctl no "heredados" para cargar y descargar plistas?

Y @launchderp respondió

  

@tjluoma Sí, todavía están a salvo. Demasiados años de dependencias para romperlos.

Si bien esto puede no parecer una declaración oficial de Apple, creo que esta persona es alguien que está trabajando activamente en launchd para Apple, y confía en lo que dice. YMMV.

Moraleja de la historia: si la carga / descarga está funcionando para ti, sigue usándolas :-)

    
respondido por el TJ Luoma 14.04.2016 - 18:45
0

El artículo referido por TJ Luoma es muy útil. Pasos para lanzar Daemon:

  1. Guarde su archivo plist en /Library/LaunchDaemons/ como de costumbre. Digamos que el archivo es com.example.mysrv.plist , y la etiqueta en plist es com.example.mysrv .
  2. %código%. Tenga en cuenta que la ruta puede ser relativa o absoluta.
  3. Comprueba el servicio con sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist . Debería decir "corriendo".

Los agentes de lanzamiento deberían ser similares. Advertencia: no tengo idea de cómo detener un servicio sin descargarlo a través de sudo launchctl print system/com.example.mysrv .

    
respondido por el Franklin Yu 17.12.2018 - 23:20

Lea otras preguntas en las etiquetas