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

Tengo algunos archivos plist en ~/Library/LaunchAgents.

He estado usando felizmente launchctl load -wy launchctl unload -wpara encenderlos y apagarlos durante años. Sin embargo, me doy cuenta de que ahora loady unloadestá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 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 lanzamiento parecen informar el éxito; por ejemplo, launchctl print "gui/$(id -u)"me muestra totalmente indicadores deshabilitados que corresponden al estado que configuré; los servicios en realidad no se inician ni se detienen o escuchar y dejar de escuchar en sus puertos.

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

El legado significa que se avecina un cambio: aún puede usar cargar y descargar al contenido de su corazón en 10.11 y versiones anteriores. Mi presunción es que Apple tendrá documentación en la WWDC de este año y un cronograma para la migración...
Supongo que es posible que aún no haya una respuesta para esto, pero seguramente pareceenable y disableestá destinado a reemplazar loady unload. Simplemente no puedo hacer que funcionen como espero.
¿Has probado a seguir launchctl enablecon launchctl kickstart?
No lo he hecho, pero ¿no se launchctl kickstartsupone que debo simplemente emitir una activación para el trabajo en cuestión? Estoy usando launchd específicamente porque quiero una activación puramente bajo demanda.

Respuestas (2)

Le pregunté al usuario de Twitter @launchderp :

@launchderp ¿Son launchctl loady descargan todavía seguros de usar, al menos hasta el 10.12 o lo que venga después?

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

Y @launchderp respondió

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

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 dice. YMMV.

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

No marcar como "aceptado" porque no aborda del todo la pregunta sobre enabley disablepero voté porque todavía aprecio la información :).
Hice una pregunta de seguimiento porque la carga/descarga dejó de funcionar para mí y no sé por qué: twitter.com/heathborders/status/1480954665680269320

El artículo referido por TJ Luoma es muy útil. Pasos para iniciar 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 a través de bootout.