launchd
Autor (es) original | Apple Computer |
---|---|
Versión inicial | 29 de abril de 2005 |
Estado de desarrollo | Activo |
Escrito en | C |
Sistema operativo | OS X |
Tipo | Init demonio |
Licencia de | Licencia de Apache 2.0 |
Sitio web | opensource |
En Informática, launchd, unificado, abrir-fuente Administración de servicios marco, comienza, se detiene y logra lista de demonios, aplicaciones, procesos, y secuencias de comandos en Apple OS X ambientes. Dave Zarzycki en Apple diseñó y escribió launchd
; Apple introdujo con Mac OS X Tiger y licencias bajo la Licencia Apache.
El launchd demonio esencialmente substituye:
- init
- rc
- init.d secuencia de comandos
- RC.d secuencia de comandos
- SystemStarter (OS X)
- inetd / xinetd
- crond / ATD
- watchdogd
Apple ha declarado que tiene la intención de eliminar a todos los servicios antes mencionados a favor de launchd.[1]
Para Mac OS X v10.4 (Tigre) Apple trasladó la mayor parte de los procesos a cargo de los demonios mencionados a launchd
.
Contenido
- 1 Componentes
- 1.1 launchd
- 1.2 launchctl
- 1.3 Lista de propiedades
- 2 Protocolo de activación de toma
- 3 Uso exterior OS X
- 4 Véase también
- 5 Referencias
- 6 Acoplamientos externos
- 6.1 Referencias Manual de Unix en línea
Componentes
Hay dos programas principales en el sistema de launchd: launchd y launchctl.
launchd gestiona los demonios a nivel de un sistema y el usuario. Similar a xinetd, launchd puede iniciar demanda. Similar a watchdogd, launchd puede controlar demonios para asegurarse de que mantenga funcionando. launchd también ha reemplazado el init como PID 1 en Mac OS X y como resultado es responsable de iniciar el sistema en el arranque.
Archivos de configuración definen los parámetros de los servicios a cargo de launchd. Almacenados en los subdirectorios LaunchAgents y LaunchDaemons de las carpetas de la biblioteca, el lista de propiedades-archivos de base tienen aproximadamente treinta diferentes claves que se pueden establecer. Launchd tiene ningún conocimiento de estos archivos de configuración o cualquier habilidad de leer-que es la responsabilidad de "launchctl".
launchctl es una aplicación de línea de comandos que habla a launchd usando IPC y sabe cómo analizar la lista de propiedades archivos que se usan para describir trabajos launchd, serializar ellos utilizando un protocolo de diccionario especializado launchd entiende. launchctl puede utilizarse para cargar y descargar daemons, iniciar y detener trabajos de launchd controlado, obtener estadísticas de utilización de sistema de launchd y sus procesos de niño y configuración de entorno.
launchd
launchd tiene dos tareas principales. La primera es arranque el sistema y la segunda es cargar y mantener los servicios.
Aquí está una vista simplificada del arranque del sistema Mac OS X Tiger en un PowerPC Mac (en un Intel Mac, EFI sustituye Open Firmware y boot.efi
sustituye BootX):
- Open Firmware activa, inicializa el hardware y entonces carga el BootX.
- BootX carga el kernel, gira el cursor del molinete y carga cualquiera necesita extensiones de kernel (kexts).
- El núcleo carga launchd.
- launchd funciona
/ etc/rc
, varios scripts que escanear a través de/ Sistema/librería/LaunchDaemons
y/ Library/LaunchDaemons
, pide launchctl el plists según sea necesario, luego launchd inicia la ventana de inicio de sesión.
En el paso 4, las secuencias de inicio exploración unos directorios distintos para los trabajos a ejecutar. Hay dos directorios diferentes que se analizan:
- LaunchDaemons directorios contienen elementos que se ejecutarán como root, Fondo General de procesos.
- Los directorios LaunchAgents contienen puestos de trabajo, llamados usos del agente, que se ejecutarán como un usuario o en el contexto del entorno de usuario. Estos pueden ser secuencias de comandos u otros elementos de primer plano, y pueden incluso incluir una interfaz de usuario.
Estos directorios se guardan en los directorios de biblioteca típicos de Mac OS X.
Launchd es muy diferente de SystemStarter en que pueden no realmente lanzar los demonios en el arranque. Clave a launchd y similar a xinetd, es la idea del lanzamiento en demonios de la demanda. Cuando launchd explora la plists trabajo al momento del arranque se reserva y escucha en todos los puertos solicitados por los puestos de trabajo. Si así se indica en el plist por la clave "OnDemand", el demonio no es realmente cargado en el momento. Más bien, launchd escuchar en el puerto, iniciar el demonio cuando sea necesario y apagarlo cuando no lo es. Después de que un demonio se carga, launchd dar seguimiento de ti y asegúrese de que está ejecutando si es necesario. De esta manera es como watchdogd y comparte el requisito de watchdogd que procesos no tratan de bifurcación o daemonize por cuenta propia. Si un proceso entra en el fondo launchd perderá pista de él y trate de relanzar.
Por lo tanto, Mac OS X Tiger arranca mucho más rápido que versiones anteriores. El sistema sólo tiene que registrar los daemons que se van a ejecutar, no ejecutarlos. De hecho, la barra de progreso que aparece durante el tiempo de arranque es sólo una aplicación de placebo (denominada WaitingForLoginWindow[2]) que no muestran realmente otra cosa que el paso del tiempo.
La parte más difícil para manejar durante un arranque de launchd es dependencias. SystemStarter tenía un sistema muy simple de las dependencias que utilizan los "usos", "Requiere" y "Brinda" claves en el plist de un elemento de inicio. Hay dos estrategias principales al crear dependencias de lanzamiento en Tigre. Utilizando CIP permitirá a los demonios hablar entre sí a trabajar fuera, o se pueden ver archivos o rutas de acceso para cambios. IPC es mucho más sutil que las llaves de SystemStarter y requiere más trabajo de los desarrolladores, pero puede[citación necesitada] conducir a empresas más limpio y más rápidos. SystemStarter todavía fue apoyada hasta OS X Mountain Lion, pero fue eliminado en OS X Yosemite.
launchctl
Con el demonio a partir de las instalaciones, mecanismos de control de servicio esparcidos en todo el sistema operativo sin central forma de gestionarlos. Con launchd, control de servicios está centralizada en la aplicación de launchctl.
Por su parte, launchctl puede tomar comandos desde la línea de comandos estándar, u operar en modo interactivo. Con superusuario privilegios, launchctl pueden utilizarse para realizar cambios a escala global. Un conjunto de comandos launchctl puede hacerse permanente si se almacena en /etc/launchd.conf. (Un por usuario ~/.launchd.conf archivo aparece que han sido consideradas, pero no es compatible con cualquier versión existente de OS X.[3])
launchctl comunica con launchd a través de un Mach-mecanismo IPC específico.
Lista de propiedades
A lista de propiedades (plist) es un tipo de archivo que launchd utiliza para la configuración del programa. Cuando launchd explora una carpeta, o un trabajo es presentado con launchctl, lee un archivo plist que describe cómo el programa se ejecutará.
Abajo sigue una lista de teclas de uso frecuente. Todas las llaves son opcionales a menos que se indique lo contrario. Para una lista completa, vea el manual de Apple para launchd.plist
.[4]
Clave | Tipo | Descripción |
---|---|---|
Etiqueta |
Cadena | El nombre del trabajo. Por Convención, el sello de trabajo es el mismo que el nombre del archivo plist, sin la .plist extensión. Obligatorio. |
Programa |
Cadena | Una ruta a un archivo ejecutable. Útil para la lanza simple. Al menos uno de Programa o ProgramArguments es Obligatorio. |
ProgramArguments |
Matriz de cadenas | Una matriz de cadenas que representan un comando de UNIX. La primera cadena es generalmente una ruta a un archivo ejecutable, mientras que este último cadenas contienen opciones o parámetros. Al menos uno de Programa o ProgramArguments es Obligatorio. |
Nombre de usuario |
Cadena (valor por defecto raíz o el usuario actual) |
El trabajo se ejecute como el usuario, que puede (o no) ser el usuario quien presentó a launchd. |
OnDemand (Obsoleto desde 10.5) |
Boolean (valor por defecto SÍ ) |
En desuso a partir de 10.5 con los más poderosos KeepAlive opción. A Boolean indicador que define si un trabajo se ejecuta continuamente o no. |
RunAtLoad |
Boolean (valor por defecto NO ) |
A Boolean indicador que define si una tarea se inicia inmediatamente cuando el trabajo se carga a launchd. |
StartOnMount |
Boolean (valor por defecto NO ) |
A Boolean indicador que define si una tarea se ejecuta cuando se monta un nuevo sistema de archivos. |
QueueDirectories |
Matriz de cadenas | Ver un directorio para los archivos nuevos. El directorio debe estar vacío para comenzar con y debe ser devuelto a un estado de vacío antes de QueueDirectories iniciará su tarea otra vez. |
WatchPaths |
Matriz de cadenas | Ver una ruta de sistema de archivos para los cambios. Puede ser un archivo o carpeta. |
StartInterval |
Entero | Horarios de trabajo para ejecutar en un horario de repetición. Indica el número de segundos de espera entre corridas. |
StartCalendarInterval |
Diccionario de enteros or Variedad de diccionarios de enteros |
Trabajo de programación. El Sintaxis de es similar a cron. |
RootDirectory |
Cadena | El trabajo será chroot en este directorio antes de la ejecución. |
WorkingDirectory |
Cadena | El trabajo será chdired en este directorio antes de la ejecución. |
|
Cadena | Claves para determinar los archivos de entrada y salida para el proceso de lanzado. |
LowPriorityIO |
Boolean | Le dice al núcleo que esta tarea es de una prioridad baja al hacer ficheros I/O. |
AbandonProcessGroup |
Boolean (valor por defecto NO ) |
A Boolean indicador que define si subprocesos lanzados desde una tarea iniciada por launchd morirán cuando termine la tarea. Útil cuando una tarea de corta duración comienza una subtarea de larga duración, pero puede resultar en procesos Zombie. |
Protocolo de activación de toma
El nombre de cada clave bajo zócalos se colocará en el entorno de la tarea cuando se ejecuta, y el descriptor de archivo de ese zócalo estará disponible en la variable de entorno. Esto difiere de la activación de toma de systemd en que el nombre de una definición de enchufe dentro de la configuración de trabajo está codificado en la aplicación. Este protocolo es menos flexible, aunque no, como systemd, requiere el daemon para codificar un descriptor de archivo inicial (como de 2014, es 3).[5]
Uso exterior OS X
Un puerto para FreeBSD se realizó como parte del Google Summer of Code Project en 2005 por R. Tyler Croy. No se puede ejecutar como PID 1 (sólo un inicio de sesión), y no es de uso general en esa plataforma.[6]
El Ubuntu Distribución de Linux considerado el uso de launchd en 2006. launchd fue rechazado como una opción porque fue lanzado bajo el Licencia de código público de Apple – que en ese momento fue descrito como un "problema de licencia ineludible".[7] Ubuntu en su lugar desarrolló y pasó a UPSTART, su propia herramienta de gestión de servicio.
En agosto de 2006, Apple cambiado launchd bajo la Licencia Apache, versión 2.0 en un esfuerzo por facilitar la adopción por parte de otros desarrolladores de código abierto.[8] Mayoría de las distribuciones Linux usan systemd o UPSTART, o continuar con inity la BSD también continuar con init.
En diciembre de 2013, R. Tyler Croy anunció su intención de comenzar a trabajar en su puerto de launchd a FreeBSD una vez más, y su "openlaunchd" repositorio de Github se levantó posteriormente en actividad.[9]
En agosto de 2015 Jordan Hubbard y Kip Macy ' s anunciaron NextBSD, que se basa en el kernel de FreeBSD-CURRENT añadiendo en Mach IPC, Libdispatch, notifyd, DALV, launchd y otros componentes derivan de Darwin, código de fuente abierta de Apple para OS X.
Véase también
- Centro de gestión de servicio
- Super servidor
- TCP Wrapper
- Gestión de servicios de sistema operativo
Referencias
- ^ «Mac OS X Manual página para launchd(8)». 8 de enero, 2008.
- ^ Bola de fuego atrevida: Tigre detalles
- ^ Mac OS X Manual página por launchd.conf(5)
- ^ Mac OS X Manual página por launchd.plist(5)
- ^ pequeño-grande-h. "nodo-launchd". 10 de abril 2014.
- ^ "Launchd". Wiki de FreeBSD. 8 de diciembre 2013.
- ^ "ReplacementInit". UbuntuWiki. 2 de julio, 2007.
- ^ Prabhakar, Ernest (07 de agosto de 2006). "Apple abre: núcleo, Mac OS Forge, iCal Server, Bonjour, Launchd". 2 de julio, 2007.
- ^ Croy, Tyler R. "La scratchiest neckbeard o FreeBSD en mi Thinkpad X200". unethicalblogger.com. 8 de diciembre 2013.
Acoplamientos externos
- Sistema arranque programación temas: Creación de launchd demonios y agentes en developer.apple.com
- Nota técnica TN2083: Demonios y agentes en developer.apple.com
- Introducción a launchd caché en web.archive.org originalmente en developer.apple.com
- launchd: un programa para la regla a todos – Google Tech talk vídeo de presentación por el desarrollador de launchd.
- sitio de launchd en el macosforge.org contiene el repositorio de subversion oficial para la fuente de launchd.
- código de fuente de launchd en Mac OS Forge (clic en "tronco", luego "Zip Archive" para obtener el código fuente completa)
- launchd - FreeBSD-Wiki, launchd portado a FreeBSD
Referencias Manual de Unix en línea
- :: Demonio amplia sistema y administrador de agente por usuario –Darwin y OS X De administrador del sistema de Manual
- –Darwin y OS X Formatos de archivo Manual
- –Darwin y OS X Formatos de archivo Manual
- –Darwin y OS X Comandos generales Manual
|
|
Otras Páginas
- Melvin Belli (abogados de California de categoria)
- Decisiones importantes: Hacerse cargo de su educacion universitaria
- Precision (informatica)
- Flickr (categoria imagen hosting)
- De Bernardo
- Owens Corning
- Eleccion de la madre (Hong Kong)
- Aversion al riesgo (psicologia) (seccion de psicologia afectiva de riesgo)
- Codigo de seguridad de la tarjeta