Conceptos sobre Upstart: puntos esenciales

Entre SysVinit y la adopción final de systemd por la mayoría de las distribuciones principales GNU/Linux, surgió una alternativa conocida como Upstart. Fue desarrollada por Canonical e integrada por primera vez con Ubuntu 6.10 Edgy a fines de 2006. Posteriormente, Fedora la adoptó y utilizó hasta la versión 14 inclusive. Hoy en día podemos encontrarla en RHEL 6.7 y similares, los cuales gozan de soporte hasta fines de este año. Por eso, en este post compartiremos algunos conceptos sobre Upstart para entender los puntos básicos de su funcionamiento.

Nunca está de más aprender los conceptos de upstart al menos en un nivel básico
Nunca está de más aprender los conceptos de upstart al menos en un nivel básico

Conceptos sobre Upstart

En primer lugar, Upstart se pensó como un reemplazo basado en eventos para el demonio init (estrictamente síncrono). Upstart supervisa tareas mientras el sistema está funcionando y responde a eventos tales como la conexión o desconexión de dispositivos extraíbles. Además, también gestiona los servicios durante el inicio y el apagado. Es importante notar que es 100% compatible con los scripts clásicos de SysVinit. De esta manera, aquellos servicios que provean un script para init pueden funcionar sin problemas bajo Upstart.

Por otro lado, Upstart también trabaja con archivos .conf dentro del directorio /etc/init. En los mismos se define el funcionamiento de servicios, y tienen la siguiente estructura:

  • Descripción del proceso
  • Niveles de corrida en los cuales el proceso debe ejecutarse o eventos que deben iniciarlo.
  • Niveles de corrida en los cuales el proceso no debe correr o eventos que deben detenerlo.
  • Opciones
  • Comando a utilizar para lanzar el proceso

Por ejemplo, consideremos el archivo backup.conf:

# Servicio de prueba para Upstart
# Stanzas
# Stanzas define when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn

# Runlevels para iniciar el servicio
start on runlevel [2345]
# Cuando detenerlo
stop on runlevel [016]
# Reiniciarlo en caso de falla
respawn
# Especificar directorio de trabajo
chdir /home/alumno/misarchivos
# Indicar el comando, junto con cualquier argumento necesario (opcional)
exec bash backup.sh arg1 arg2

Para aplicar los cambios:

initctl reload-configuration

Finalmente, nos resta iniciar el servicio manualmente por única vez. Para hacerlo, utilizamos el comando Upstart start seguido del nombre del servicio (backup, tomado del nombre del archivo de definición backup.conf sin la extensión):

start backup

Espero que este post les haya resultado informativo. ¡Nos leemos en el próximo!

¡Aprovechá la oportunidad de suscribirte al blog para recibir en tu correo el post nuestro de cada día, novedades, y promociones exclusivas!