Linux – Sistema de inicio Upstart

por | 22 octubre, 2015

Upstart es un sistema de arranque se servicios o aplicaciones en Linux que solventa algunas deficiencias del System V.

El demonio init presenta deficiencias por ejemplo en la exploración de nuevos dispositivos de almacenamiento, memorias USB, carga de drivers antes de la detección del hardware. Esto es debido a su carácter síncrono, se bloquean tareas hasta que la tarea anterior se ha completado, y a que las tareas han de ser definidas por adelantado y sólo pueden ser ejecutadas cuando se reinicia el sistema o se cambia de runlevel.

Upstart es totalmente compatible con System V y puede ejecutar todos sus scripts sin modificación alguna.

Upstart está basado en eventos para el demonio init y gestiona los servicios que se arrancan al inicio y gestiona las tareas mientras el sistema está arrancado. Upstart sigue arrancando el proceso init como primero del sistema con PID 1 pero a diferencia de System V, puede arrancar los servicios en paralelo, es decir, de forma asíncrona.

En el directorio /etc/event.d/ hay una serie de eventos (ficheros) que Init ejecuta según el orden y las dependencias establecidas en los mismos. En estos ficheros (eventos) se indican qué tarea ejecutar, cuándo y cómo, mediante su propio lenguaje.

Nomenclatura de los ficheros de eventos:

exec <orden><argumentos>

Ejecuta la orden con los argumentos indicados. Por ejemplo:

exec /etc/rc.d/rc 0
exec /sbin/mingetty tty2

script . . . end script

Ejecuta el script indicado. Por ejemplo:

script

   set $(runlevel || true)
   if [ "$2" != "0" ] && [ "$2" != "6" ]; then
      set $(runlevel --set 0 || true)
   fi
   if [ "$1" != "unknown" ]; then
      PREVLEVEL=$1
      RUNLEVEL=$2
      export PREVLEVEL RUNLEVEL
   fi
   exec etc/rc.d/rc 0 # Combina exec con script

end script

start on <event>

Describe bajo qué condiciones se lanza ese evento. Ejemplo:

start on startup
start on stopped rc2
start on runlevel 5
start on started prefdm

stop on <event>

Describe bajo qué condiciones de para el evento. Por ejemplo:

stop on runlevel [35]
stop on started prefdm

respawn

Vuelve a lanzar ese proceso o demonio cuando muera.

console

Indica hacia donde se redirigirá la salida generada por el evento.

pre-start

Ejecuta la orden o script antes de lanzar el proceso. Por ejemplo:

pre-start exec rm -f /var/run/crond
pre-start script
if [ "$RUNLEVEL" == "S"]
   then
   RUNLEVEL=1
fi
end-script

post-start

Ejecuta la orden o script después de lanzar el proceso. Por ejemplo:

post-start exec touch/var/run/crond
post-start script
if [ "$RUNLEVEL" == "1"]
    then
    RUNLEVEL=S
fi
end-script

pre-stop

Ejecutar la orden o script antes de parar ese proceso. Por ejemplo:

pre-stop exec ...
pre-stop script / end-script

post-stop

Ejecuta la orden o script después de parar el proceso. Por ejemplo:

post-stop exec ...
post-stop script / end-script

Por compatibilidad con System V se incluyen en /etc/even.d una serie de ficheros rc[X] que lo que hacen es llamar a los scripts correspondientes en /etc/rc.d. Es decir los script de ejecución del runlevel de System V se ejecutan como un evento en Upstart.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *