8 votos

¿Cómo asocio una lista de lanzamiento 2 con sus objetivos de dominio y servicio?

¿Qué son exactamente estos "dominios" y "objetivos de servicio" y cómo los asocio con las plantillas para el uso de los lanzamientos?

OS X 10.10 introduce un nuevo launchctl API para gestionar los LaunchDaemons y los plists de lanzamiento. Los mensajes de registro y las páginas de manual sugieren que las teclas como KeepAlive y RunAtLoad ya no debe usarse y que los subcomandos enable ; bootstrap y kickstart debe utilizarse en lugar de load -w y unload -w

Sin embargo, no está claro en las páginas de manual cómo asociar un plist con el "dominio" y el "objetivo de servicio" del que habla y sin el cual estos comandos no pueden ser usados con plists existentes que aparentemente eran bastante suficientes para OS X 10.9

Por ejemplo, [actualizado]: Un plan básico que estamos tratando de "lanzar"; aparentemente se ha lanzado en el dominio del "sistema", pero posteriormente no se reconoce en el "sistema".

# pwd
/Library/LaunchDaemons
# cat com.iainhouston.django.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
     <key>Label</key>
     <string>com.iainhouston.django</string>
     <key>ProgramArguments</key>
     <array>
          <string>/usr/local/virtualenvs/django.iainhouston.com/bin/gunicorn</string>
          <string>--bind=127.0.0.1:49202</string>
          <string>--workers=2</string>
          <string>superlists.wsgi:application</string>
     </array>
     <key>Disabled</key><false/>
</dict>
</plist> 
# launchctl bootstrap system com.iainhouston.django.plist
/Library/LaunchDaemons/com.iainhouston.django.plist: Service is disabled 
# launchctl enable system/com.iainhouston.django.plist 
# launchctl kickstart system/com.iainhouston.django.plist
Could not find service "com.iainhouston.django.plist" in domain for system  

Motivación

El registro del sistema registra que launchctl -w load ... se queja cuando usamos KeepAlive con RunAtLoad que Este servicio se define como de funcionamiento constante y es inherentemente ineficiente. así que estamos motivados para usar la nueva interfaz.
No sólo eso, tenemos problemas significativos con el uso excesivo del procesador que queremos controlar proporcionando las palabras clave adecuadas bajo demanda, así que, de nuevo, estamos motivados para entender cómo interactuar con el nuevo lanzamiento .... no es fácil con los documentos tal y como están!

4voto

Steve Evans Puntos 155

Si es posible, presentar un error con Apple con respecto a la documentación incompleta o poco clara.

launchd parece haber ha sido reescrito para OS X 10.10 y es probable que aún esté en flujo para unas pocas versiones menores todavía.

Los dominios y los objetivos de servicio parecen ser una abstracción de las diversas carpetas disponibles para los boletos de trabajo lanzados. También permiten un medio para que los comandos launchctl apunten a sesiones específicas; una característica que debería permitir que un comando launchctl afecte a otras sesiones de usuario.

Sin embargo, a partir de OS X 10.10.1, el launchd.plist man page no hace mención de la depreciación KeepAlive o RunAtLoad llaves.

Apple sugiere evitar KeepAlive y RunAtLoad porque la intención es evitar lanzar un proceso sin garantía de trabajo a realizar. Ambas claves permanecen y son necesarias para muchas tareas.

El mejor documento de referencia sigue siendo Nota técnica TN2083, Daemons and Agents . Este documento proporciona una gran visión sobre el lanzamiento y las intenciones de Apple sobre cómo los procesos de fondo deben ser implementados.

4voto

David Mitchell Puntos 1742

Estás cerca, pero no deberías tener la parte .plist en los comandos de habilitación y arranque. Aquí hay un código que usamos para asociarlo a un dominio y un objetivo de servicio para un usuario. $UID es básicamente tu userid.

launchctl bootstrap gui/$UID /Library/LaunchAgents/com.yourcompany.yourapp.plist
launchctl enable gui/$UID/com.yourcompany.yourapp
launchctl kickstart -k gui/$UID/com.yourcompany.yourapp

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X