¿Cómo utilizo los comandos launchctl no "heredados" para cargar y descargar listas?

14

Tengo algunos archivos plist en ~/Library/LaunchAgents.

He estado felizmente usando launchctl load -wy launchctl unload -wpara encender y apagar estos por años. Sin embargo, me doy cuenta de eso ahora loady estoy unloadrelegado 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 plists a través de launchctl enable "gui/$(id -u)/com.example.service"y launchctl disable "gui/$(id -u)/com.example.service", otros comandos de launchd parecen informar de éxito, por ejemplo, launchctl print "gui/$(id -u)"me muestra totalmente los indicadores deshabilitados que corresponden al estado que he establecido, los servicios en realidad no se inician ni se detienen o escuche y deje de escuchar en sus puertos.

¿Hay algún paso que me estoy perdiendo? Por el momento me estoy quedando loady unloadme gustaría aprender la forma no obsoleta de interactuar con estas cosas antes de que Apple finalmente cierre la puerta de la manera antigua / mala ...

Glifo
fuente
El legado significa que se está produciendo un cambio: aún puede usar cargar y descargar el contenido de su corazón en 10.11 y versiones inferiores. Mi presunción es que Apple tendrá documentación en WWDC este año y un cronograma para la migración ...
bmike
1
Supongo que simplemente no puede haber una respuesta para esto todavía, pero seguro que se ve como enabley disableestán destinadas a sustituir loady unload. Simplemente no puedo hacer que trabajen como espero.
Glifo
1
¿Has intentado seguir launchctl enablecon launchctl kickstart?
No lo he hecho, pero ¿no se launchctl kickstartsupone que solo emita una activación para el trabajo en cuestión? Estoy usando launchd específicamente porque quiero una activación puramente a pedido.
Glifo
2
Parece que puede ayudar: babodee.wordpress.com/2016/04/09/launchctl-2-0-syntax
TJ Luoma

Respuestas:

6

Le pregunté al usuario de Twitter @launchderp :

@launchderp ¿Sigue launchctl loadsiendo seguro usar y descargar, al menos hasta las 10.12 o lo que venga después?

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

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 launchdpara Apple, y confío en lo que dicen. YMMV.

Moraleja de la historia: si cargar / descargar funciona para usted, siga usándolos :-)

TJ Luoma
fuente
2
No se marca como "aceptado" porque no aborda la pregunta enabley se disablevota porque todavía aprecio la información :).
Glifo
1

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

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

Los agentes de lanzamiento deben ser similares. Advertencia: No tengo idea de cómo detener un servicio sin descargarlo bootout.

Franklin Yu
fuente