Tengo algunos archivos plist en ~/Library/LaunchAgents
.
He estado felizmente usando launchctl load -w
y launchctl unload -w
para encender y apagar estos por años. Sin embargo, me doy cuenta de eso ahora load
y estoy unload
relegado 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 load
y unload
me 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 ...
enable
ydisable
están destinadas a sustituirload
yunload
. Simplemente no puedo hacer que trabajen como espero.launchctl enable
conlaunchctl kickstart
?launchctl kickstart
supone 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.Respuestas:
Le pregunté al usuario de Twitter @launchderp :
Y @launchderp respondió
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 dicen. YMMV.Moraleja de la historia: si cargar / descargar funciona para usted, siga usándolos :-)
fuente
enable
y sedisable
vota porque todavía aprecio la información :).El artículo referido por TJ Luoma es muy útil. Pasos para lanzar Daemon:
/Library/LaunchDaemons/
como de costumbre. Digamos que el archivo escom.example.mysrv.plist
, y la etiqueta en plist escom.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
bootout
.fuente