Introducción a systemd


Aprende los conceptos y comandos de systemd de Linux con un ejemplo

Introducción a systemd
oscar Escrito por oscar 06 July 2026 7 0

systemctl es la interfaz de administración de systemd, el sistema de init y gestor de servicios usado por la mayoría de distribuciones modernas de Linux como Ubuntu, Debian, Red Hat Enterprise Linux, Rocky Linux, Fedora y SUSE Linux Enterprise.

Puedes revisar a detalle su definición en la siguiente documentación:

¿Qué es systemd?

Antes de systemd, Linux usaba sistemas como SysVinit.

Cuando arrancaba Linux:

BIOS/UEFI
 ↓
Bootloader (GRUB)
 ↓
Kernel
 ↓
PID 1

El proceso PID 1 es el primer proceso del sistema.

En sistemas modernos, PID 1 es:

systemd

Puedes comprobarlo:

ps -p 1

Salida:

PID TTY          TIME CMD
1 ?        00:00:02 systemd

systemd administra:

Y systemctl es el cliente para controlarlo.

¿Qué hace systemctl?

Piensa en systemctl como una consola de control: systemctl → habla con systemd

Con él puedes:

Archivos .service

Cada servicio tiene un archivo:

/etc/systemd/system/
/usr/lib/systemd/system/

Ejemplo

nginx.service

Ver contenido:

systemctl cat nginx

Un unit file típico:

[Unit]
Description=Mi aplicación

[Service]
ExecStart=/opt/app/start.sh
Restart=always

[Install]
WantedBy=multi-user.target

Donde:

Comandos principales de systemd

Listar servicios

Todos
systemctl list-units --type=service

Solo activos:

systemctl list-units --type=service --state=active

Fallidos:

systemctl --failed

Esto es oro en troubleshooting.

Ver estado

systemctl status ssh

Ejemplo con OpenSSH:

systemctl status ssh

Te muestra:

Iniciar un servicio

sudo systemctl start nginx

Ejemplo con NGINX.

Esto lo inicia ahora, pero no en el próximo reboot.

Detener

sudo systemctl stop nginx

Reiniciar

sudo systemctl restart nginx

Muy usado después de cambiar configuración.

Recargar configuración

sudo systemctl reload nginx

Recarga sin matar el proceso.

Diferencia:

reload → SIGHUP
restart → stop + start

 

Habilitar al arranque

sudo systemctl enable nginx

Crea enlaces simbólicos para arrancar automáticamente.

Verifica:

systemctl is-enabled nginx

Deshabilitar

sudo systemctl disable nginx

Iniciar y habilitar

Muy común:

sudo systemctl enable --now nginx

Hace ambas cosas.

Logs

systemd integra con systemd-journald.

Ver logs:

journalctl -u nginx

Tiempo real:

journalctl -u nginx -f

Última hora:

journalctl -u nginx --since "1 hour ago"

Dependencias

Ver dependencias:

systemctl list-dependencies nginx

Muy útil para entender orden de arranque.

EJEMPLO SIMPLE: crear tu propio “servicio falso”

Vamos a crear un servicio mínimo que solo imprime algo en un log.

Objetivo

Tendrás un servicio llamado: mi-servicio que ejecuta un script.

Crear un script simple

Creamos el archivo en el directorio /opt:

sudo nano /opt/mi-servicio.sh

Agregamos el siguiente contenido:

#!/bin/bash

while true
do
  echo "Mi servicio está corriendo: $(date)" >> /tmp/mi-servicio.log
  sleep 5
done

👉 ¿Qué hace?

Dar permisos

Damos permisos de ejecución al archivo creado:

sudo chmod +x /opt/mi-servicio.sh

Crear el servicio systemd

Creamos el servicio mi-servicio en /etc/systemd

sudo nano /etc/systemd/system/mi-servicio.service

Contenido:

[Unit]
Description=Mi servicio de ejemplo ultra simple

[Service]
ExecStart=/opt/mi-servicio.sh
Restart=always

[Install]
WantedBy=multi-user.target

Recargar systemd

Esto es OBLIGATORIO cuando creas o cambias servicios:

sudo systemctl daemon-reload

Iniciar el servicio

sudo systemctl start mi-servicio

Ver si está funcionando

systemctl status mi-servicio

Deberías ver algo como:

Active: active (running)

Ver qué está haciendo realmente

Mira el log del script:

cat /tmp/mi-servicio.log

Ejemplo de salida:

Mi servicio está corriendo: Tue May  5 12:00:01 2026
Mi servicio está corriendo: Tue May  5 12:00:06 2026

Parar el servicio

sudo systemctl stop mi-servicio

👉 Observa lo que pasa:

Reiniciarlo

sudo systemctl start mi-servicio

Hacer que arranque solo al reiniciar Linux

sudo systemctl enable mi-servicio

Comentario

Debe aceptar antes de enviar