Logo de Linux Mint en duotono

Manual de Supervivencia Linux

Consejos y guías para tu supervivencia
con Linux Mint con MATE.

Comandos de Terminal de GNU/Linux
y Scripts multidistribución


Systemd: El Init de Nueva Generación

Systemd es el sistema de inicialización y gestor de servicios que arranca, detiene y supervisa los procesos esenciales de Linux de manera paralela y eficiente.

Cuando enciendes tu equipo con Linux, numerosos servicios como red, sonido o entorno gráfico deben iniciarse en el orden correcto. El comando systemd actúa como un director de orquesta: gestiona cada servicio (o «unidad»), controla sus dependencias y acelera el arranque al lanzarlos en paralelo. Además, monitoriza su estado durante toda la sesión y centraliza sus registros para facilitar el diagnóstico.

Conceptos básicos

Hace años, SysV init era el encargado de arrancar servicios. Ahora systemd introduce unidades («units»), dependencias paralelas y cero soft–fork.

En systemd todo gira en torno a unidades (units), que son archivos de configuración que describen servicios, tareas temporizadas o agrupaciones. A continuación, los términos esenciales:

  • Unit: archivo .service, .timer, .target… define qué hacer y cuándo.
  • Service: tipo de unit para servicios (daemon).
  • Timer: ejecuta unidades en horarios o tras intervalos.
  • Target: grupo de units para alcanzar estados (equivalente a runlevels).
  • Journald: sistema de registro centralizado en binario, consulta con journalctl.

Nota técnica: Cuando hablamos de «cero soft-fork», systemd no requiere que los servicios se demonicen usando la técnica de doble fork (soft–fork). En lugar de eso, lanza el proceso directamente y gestiona su PID internamente, eliminando bifurcaciones (forks) adicionales y reduciendo la sobrecarga al arrancar los servicios.

Gracias a esta estructura, systemd arranca servicios simultáneamente cuando no dependen unos de otros, haciendo el inicio mucho más rápido y fiable que el viejo SysV.

Estructura general de uso

Estructura de uso: systemctl [opciones] comando servicio

Dicho de forma sencilla: primero escribimos systemctl, después podemos añadir alguna opción, luego indicamos la acción que queremos realizar y, si corresponde, el nombre del servicio.

Algunas acciones habituales con systemctl:

  • list-units: lista las unidades cargadas.
  • list-timers: muestra temporizadores activos.
  • status: muestra el estado de un servicio.
  • start: inicia un servicio.
  • stop: detiene un servicio.
  • enable: activa un servicio para que arranque con el sistema.
  • disable: impide que arranque automáticamente.
  • etc…

Cómo listar todos los servicios:

$ systemctl list-units –type=service

TERMINAL
► 1973sobreruedas@manual_de_supervivencia_linux ◄
/Linux Mint 22.1\ - Manual de supervivencia linux - /xia 22.1\
~ -> $ systemctl list-units --type=service
 UNIT                                                                      >
  accounts-daemon.service                                   loaded active r>
  alsa-restore.service                                      loaded active e>
  apache2.service                                           loaded active r>
  apparmor.service                                          loaded active e>
  avahi-daemon.service                                      loaded active r>
  binfmt-support.service                                    loaded active e>
  blk-availability.service                                  loaded active e>
● casper-md5check.service                                   loaded failed f>
  colord.service                                            loaded active r>
  console-setup.service                                     loaded active e>
  cron.service                                              loaded active r>
  cups-browsed.service                                      loaded active r>
  cups.service                                              loaded active r>
  dbus.service                                              loaded active r>
[...]
Lines 1-38
[...]

La extensión de los servicios es bastante amplia, para poder moverse se utiliza ↑ y ↓; para salir del modo de listado pulsar q.

Es útil comprobar si algún servicio tiene errores, éstos la Terminal los marca en rojo.

Ejemplos:

$ systemctl status sshd.service

systemctl    → herramienta
status → acción [opción]
sshd.service → servicio consultado

$ systemctl enable nginx.service

systemctl     → herramienta
enable → acción [opción]
nginx.service → servicio que hemos habilitado

Diagnóstico y logs

Cuando un servicio falla, no siempre basta con mirar si está activo o detenido. También conviene revisar qué ha dejado escrito en los registros del sistema. Para eso usamos journald, la herramienta que permite consultar los mensajes recogidos por journald.

⚠️ Esta parte ya entra en un uso más avanzado. No es necesario crear unidades propias para usar Linux a diario, pero conviene saber que journald permite definir servicios personalizados cuando queremos automatizar tareas o lanzar scripts al arrancar.

Algunas opciones útiles de journalctl:

  • --since fecha / hora: muestra líneas a partir de una fecha u hora (ejemplo: --since "2025-06-01" o --since "1 hour ago").
  • --until fecha / hora: muestra líneas hasta la fecha u hora indicada.
  • -f: sigue en tiempo real (equivalente a tail -f).
  • -u servicio: filtra registros de una unidad de systemd (p.ej. -u nginx.service).
  • -p nivel: muestra sólo mensajes de cierta prioridad (err, warning, info, debug…).
  • -b: muestra sólo logs del inicio de sistema actual (boot).

Ejemplo:

$ journalctl -u mi-servicio.service -p err -b

En este caso mostrará:

  • -u mi-servicio.service: restringe a esa unidad.
  • -p err: sólo mensajes de error.
  • -b: logs del arranque actual.

Creación de unidades personalizadas

Sección avanzada

Creación de una unidad de servicio de ejemplo.

En modo root:

TERMINAL
root@manual_de_supervivencia_linux
/- Manual de Supervivencia Linux -\
   ► Modo root ◄
/etc/systemd/system -> # nano mi-servicio.service
[Unit]
Description=Mi servicio de ejemplo
After=network.target
[Service]
ExecStart=/usr/bin/mi-script
Restart=on-failure
[Install]
WantedBy=multi-user.target

Este archivo define una unidad de servicio para systemd. No es un script en sí mismo, sino una pequeña ficha de instrucciones que indica al sistema qué debe ejecutar, cuándo debe hacerlo y cómo debe comportarse si falla.

  • [Unit]: describe el servicio y permite indicar dependencias o condiciones de arranque.
  • Description: texto descriptivo que aparecerá al consultar el estado del servicio.
  • After=network.target: indica que esta unidad debe iniciarse después de que el sistema haya alcanzado el objetivo de red.
  • [Service]: define cómo se ejecuta el servicio.
  • ExecStart: ruta del programa o script que systemd debe lanzar.
    • Nota: En este ejemplo, /usr/bin/mi-script representa un script ficticio.
  • Restart=on-failure: reinicia el servicio sólo si falla.
  • [Install]: indica cómo se integrará la unidad si la activamos para el arranque.
  • WantedBy=multi-user.target: permite que el servicio se inicie en un entorno multiusuario normal, sin necesidad de entorno gráfico.

Después de crear o modificar una unidad, systemd necesita recargar su configuración interna:

# systemctl daemon-reload

Una vez recargada la configuración, ya podemos iniciar el servicio manualmente:

# systemctl start mi-servicio.service

En un caso real, conviene comprobar que la ruta indicada en ExecStart existe, que el archivo tiene permisos de ejecución y que el servicio arranca correctamente con systemctl status mi-servicio.service.

Pequeña reflexión

Aunque solemos interactuar con Linux mediante aplicaciones gráficas, gran parte del sistema funciona gracias a servicios que trabajan silenciosamente en segundo plano. Comprender cómo funciona systemd no significa memorizar todos sus comandos, sino entender mejor qué ocurre realmente cuando encendemos nuestro equipo.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Manual de Supervivencia Linux

Logo de Tux transparente del Manual de Supervivencia Linux

Linux Mint – Mate

Bienvenido a este espacio donde aprender diferentes funciones, características y configuraciones del sistema operativo y su escritorio.

📨 Contactar

Últimas publicaciones

Últimos Comentarios

Filtrar por Categoría

Nube de etiquetas