El arranque y parada de servicios de linux es muy habitual cuando estamos montando algún servidor linux. Normalmente los arrancamos y paramos cuando lo necesitamos, pero ¿qué ocurre si reiniciamos?. ¿Arrancará solo? O ¿tendremos que ir a mano a arrancarlo?

También te puede interesar:
Tutorial para instalar ElasticSearch en Centos 7
Comprimir y descomprimir .gz, .tar.gz, y .zip en linux por comandos
Cuál es mi IP
Instalar paquetes en Centos

Sistemas de gestión de servicios de linux

Actualmente podemos encontrarnos distintos sistemas de gestión de servicios en linux que son:

  • Init: Son los que se crean en la carpeta /etc/init.d
  • Systemd: Son los que se tienen que iniciar con el comando systemctl.
  • Upstart: Es un sustituto de Init

El más reciente y moderno es el Systemd.

No quiero meterme en detalles, porque tampoco es mi fuerte este conocimiento tan detallado de cómo ha ido evolucionando linux en este aspecto, pero sí quería nombrarlo para que sepáis que hay distintos sistemas posibles. Y me he enterado también que Init era hasta Centos 6 y Systemd llegó a partir de Centos 7. En Ubuntu ocurría lo mismo, creo que era a partir de la versión 16 es cuando incluía el nuevo sistema Systemd para sustituir al antiguo sistema Init.

Aquí os dejo más información sobre las diferencias entre Init, UpStart y Systemd por si queréis echarle un vistazo.

Ventajas de Systemd

Pues la principal ventaja es que nos permite iniciar servicios automáticamente si se reinicia el servidor. Y es mucho más fácil hacerlo con Systemd que con Init. De ahí que esté documentando esto para vosotros y sobre todo para mí para tenerlo siempre localizado cada vez que necesite hacer uso de esta funcionalidad.

Comandos para iniciar automáticamente los servicios en Centos

Para que un servicio se inicie de forma automática en linux tenemos que activarlo en el sistema. Para que durante, sepa que debe iniciarlo. Igualmente, también podemos desactivarlo para que haga lo contrario. Vamos a ver los comandos que necesitamos.

Comando para saber si un servicio está activado en el arranque:

systemctl is-enabled [nombre-servicio]

Comando para iniciar automaticamente el servicio en el arranque:

systemtcl enable [nombre-servicio]

Comando para iniciar un servicio en linux:

systemctl [nombre-servicio] start

O también podemos hacerlo así:

service [nombre-servicio] start

Igualmente, podemos pararlo o preguntar si está levantado o caído el servicio con estos comandos:

service [nombre-servicio] stop

service [nombre-servicio] status

Veamos un ejemplo.

Comandos para iniciar servicios en linux

Aquí tenéis un ejemplo donde se puede ver que he consultado el estado del servicio de MySQL y del servicio de Apache.

iniciar automáticamente un servicio en centos con systemctl

Para saber si está activado MySQL:

systemtcl is-enabled mysqld

Por defecto, cuando instalas MySQL, el propio instalador ya lo configura para que se inicie en el arranque.

Pero si estamos con Apache, parece que no. Apache en su instalador no lo activa. Por eso es bueno que lo activemos para que si reiniciamos la máquina este se arranque solo y nuestras webs vuelvan a estar disponibles.

systemctl enable httpd

Iniciar automáticamente los microservicios

Si estamos en una arquitectura con microservicios, este tutorial te vendrá de perlas. Si tu aplicación tiene muchos microservicios, esta es la forma más sencilla de configurar el arranque automático de todos tus microservicios para que la aplicación se inicie sola si se produce un reinicio.

Conclusiones

Espero que os haya sido de utilidad. En mis tutoriales de linux me gusta ir al grano y a lo práctico. Así que ya sabéis cómo iniciar vuestros servicios de linux automáticamente utilizando el sistema Systemd.