Tengo algunos archivos plist en ~/Library/LaunchAgents
.
He estado usando felizmente launchctl load -w
y launchctl unload -w
para encenderlos y apagarlos durante años. Sin embargo, me doy cuenta de 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 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 load
y 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...
Le pregunté al usuario de Twitter @launchderp :
@launchderp ¿Son
launchctl load
y 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?
@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 launchd
para Apple y confío en lo que dice. YMMV.
Moraleja de la historia: si la carga/descarga funciona para usted, siga usándolos :-)
enable
y disable
pero voté porque todavía aprecio la información :).El artículo referido por TJ Luoma es muy útil. Pasos para iniciar Daemon:
/Library/LaunchDaemons/
como de costumbre. Digamos que el archivo es com.example.mysrv.plist
, y la Etiqueta en plist es com.example.mysrv
.sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist
. Tenga en cuenta que la ruta puede ser relativa (a $PWD
) o absoluta.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
.
bmike
glifo
enable
ydisable
está destinado a reemplazarload
yunload
. Simplemente no puedo hacer que funcionen como espero.usuario11633
launchctl enable
conlaunchctl kickstart
?glifo
launchctl kickstart
supone 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.TJ Luoma