Sí, ofrece ese modo, y de hecho se indica en el manual justo debajo de donde dice que los otros son heredados.
Así que, citando la página de manual de launchctl
en la sección de subcomandos heredados - para los subcomandos load
y unload
dice:
Subcomandos alternativos recomendados: bootstrap | bootout | enable | disable
Así que esos son los subcomandos más nuevos, que quieres mirar.
He aquí algunos ejemplos:
Antes, si se utilizaba load
así:
launchctl load my.plist
Ahora escribirás uno de estos:
sudo launchctl bootstrap system my.plist
launchctl bootstrap user/$(id -u) my.plist
launchctl bootstrap gui/$(id -u) my.plist
La diferencia es que ahora hay que especificar el objetivo del dominio. La diferencia es que system
significa que va a ser un demonio del sistema que se ejecuta como el superusuario, en comparación con user
lo que significa que se ejecutará como el usuario dado, y gui
lo que significa que se ejecutará como el usuario dado, pero sólo estará activo cuando el usuario esté conectado a la interfaz gráfica de usuario. También hay un session
y pid
dominio de destino si tiene necesidades más avanzadas.
El $(id -u)
es básicamente una mano corta para encontrar el id de tu propio usuario. Puedes ejecutar id -u
en el Terminal para obtenerlo si no lo conoces, y luego puedes especificarlo manualmente como por ejemplo así:
launchctl bootstrap gui/501 my.plist
El sustituto de unload
es bastante similar:
sudo launchctl bootout system my.plist
launchctl bootout user/$(id -u) my.plist
launchctl bootout gui/$(id -u) my.plist
Así que lo anterior cubre cómo pasar de los subcomandos heredados a los subcomandos recomendados en su lugar.
La segunda parte de tu pregunta es si puedes hacer esto sin usar un archivo plist. La respuesta es no. El bootstrap
requiere que se especifique una ruta de servicio, que puede ser un plist, un paquete de servicios XPC - o un directorio de cualquiera de ellos. Los paquetes de servicios XPC son utilizados por los desarrolladores de aplicaciones, pero también incluyen un archivo plist - por lo que ir por ese camino no te va a salvar de tener un archivo plist.
Por supuesto, se pueden hacer varios tipos de soluciones con scripts o programas de utilidad para no tener que crear y mantener manualmente los archivos plist. Incluso podría utilizar, por ejemplo, una tubería con nombre para evitar tener que almacenar realmente el contenido del archivo plist en el disco, pero no puedo ver el beneficio práctico de eso.