Administrar servicios en Ubuntu 14.04 LTS con Upstart

Publicado por P. Ruiz en

Desde la versión 9.10 de Ubuntu, comenzó a implantarse Upstart como sustituto del servicio init (en particular, SysVinit), que es quien se encargaba hasta ese momento de iniciar los servicios durante el arranque del sistema, detenerlos cuando apagamos y controlar su funcionamiento mientras están activos.

La ventaja de Upstart es que controla los servicios atendiendo a sus eventos, lo que le permite, entre otras cosas, aumentar su rendimiento. Además, es compatible con el método anterior.

Si quieres revisar cómo funcionaban las cosas con SysVinit puedes echarle un vistazo a nuestro artículo Administrar servicios en Ubuntu 14.04 LTS mediante scripts de inicio.

El inconveniente de todo esto es que, dentro de /etc/init.d, además de los scripts tradicionales podemos encontrar los Upstart jobs (o tareas Upstart, en español). Así, si intentamos aplicar usar directamente los scripts de inicio/parada con algunos servicios, podemos encontrarnos con un error como el de la imagen siguiente:

El script cron ha sido convertido en un Upstart job.

El único inconveniente es que, para ver ahora el estado de este tipo de servicios, debemos utilizar el comando initctl list.

De esta forma obtenemos la lista completa de los servicios que se están ejecutando en el sistema.

Y para obtener información referente a un servicio concreto, podemos canalizar la salida a través del comando grep:

sudo initctl list | grep cron

En este caso, también aparece el comando anacron porque coincide con la búsqueda.

Además, realizaremos la gestión de servicios Upstart con los siguientes comandos:

start

Permite iniciar la ejecución de un servicio. Por ejemplo, para iniciar el servicio cron, ejecutaremos lo siguiente:

sudo start cron

Como antes, recibimos un mensaje informativo, aunque ahora también se incluye el PID del proceso.

stop

Permite detener la ejecución de un servicio. Por ejemplo, para detener el servicio anterior escribimos esto:

sudo stop cron

De nuevo, recibimos un mensaje informativo.

restart

Equivale a realizar las dos operaciones anteriores. Primero detiene el servicio y después lo inicia. Para reiniciar el servicio anterior, escribimos esto:

sudo restart cron

Debemos observar que cuando reiniciamos el servicio, recibe un PID diferente.

El comando service

Este comando permite gestionar de forma indistinta tanto scripts tradicionales como Upstart jobs. Además, cuando usamos scripts, evitamos la necesidad de escribir la ruta completa.

La forma de realizar las acciones anteriores utilizando el comando service sería la siguiente:

  • service … start: Permite iniciar la ejecución de un servicio. Por ejemplo, para iniciar el servicio cron, ejecutaremos lo siguiente:

    sudo service cron start
  • service … stop: Detiene un servicio que se está ejecutando. Por ejemplo, para detener el servicio anterior, escribiríamos esto:

    sudo service cron stop
  • service … restart: Equivale a realizar las dos operaciones anteriores. Primero detiene el servicio y después lo inicia. Para reiniciar el servicio anterior, escribimos esto:

    sudo service cron restart
  • service … status: Nos permite consultar el estado en el que se encuentra un servicio. Para comprobarlo, sólo tenemos que escribir lo siguiente:

    sudo service cron status

    En este caso también podemos comprobar el estado de todos los servicios utilizando el siguiente comando:

    sudo service --status-all

Y esto es todo por el momento. Espero que te haya resultado interesante.