Aloje su propio agente de IA con OpenClaw: instalación gratuita en un solo clic!

Lista y administra servicios de Linux con systemctl

Lista y administra servicios de Linux con systemctl

Un servidor con 40 servicios en ejecución y sin idea de cuáles son realmente necesarios es un incidente de seguridad esperando a suceder. systemctl te da visibilidad y control total sobre cada demonio en tu sistema.

Cómo funcionan los servicios de Linux

Los servicios de Linux son procesos en segundo plano que se ejecutan independientemente de las sesiones de usuario. Se encargan de todo, desde el servicio web hasta la programación de cron y el acceso a SSH. En los sistemas Linux modernos, están gestionados por systemd.

¿Qué es un demonio?

Un demonio es un proceso que se ejecuta en segundo plano, típicamente comenzando al arrancar y funcionando continuamente. El nombre proviene de la tradición de Unix. Apache es un demonio. sshd es un demonio. MySQL es un demonio. No tienen un terminal de control y no requieren interacción del usuario para ejecutarse.

systemd vs sistemas de inicialización más antiguos

systemd reemplazó a SysVinit como el sistema de inicialización predeterminado en la mayoría de las distribuciones importantes alrededor de 2014-2015. Las principales diferencias: systemd inicia servicios en paralelo (arranque más rápido), utiliza archivos de unidad declarativos en lugar de scripts de shell, rastrea explícitamente las dependencias de los servicios e integra el registro a través del diario. Si estás en Ubuntu 16.04+, CentOS 7+ o Debian 8+, estás utilizando systemd.

Cómo listar los servicios de Linux

Lista todos los archivos de unidad con systemctl

El comando principal para listar servicios y sus estados:

sudo systemctl list-unit-files --type=service

Esto muestra cada archivo de unidad de servicio en el sistema con su estado (habilitado, deshabilitado, enmascarado, estático o fallido) y su indicador de ajuste predeterminado del proveedor.

Listar solo servicios en ejecución

Para ver solo los servicios activos:

sudo systemctl list-units --type=service --state=running

Esto es útil cuando quieres auditar qué está realmente en ejecución frente a lo que solo está instalado.

Filtrar servicios por estado

systemctl lista servicios soporta filtrar por estado:

sudo systemctl list-units --type=service --state=failed

Los servicios fallidos son aquellos que quieres investigar de inmediato. Un servicio que falló al arrancar y nadie notó es una fuente común de comportamiento misterioso.

Listado de servicios en sistemas más antiguos

En sistemas que aún usan SysVinit o que tienen el comando service:

service --status-all

La salida muestra + para en ejecución, – para detenido, y ¿? para estado desconocido.

Cómo gestionar servicios de Linux

Inicia y detén un servicio

Inicia un servicio detenido:

sudo systemctl start nginx

Detén un servicio en ejecución:

sudo systemctl stop nginx

Estos cambios son inmediatos, pero no persistentes. Si el servidor se reinicia, el servicio vuelve a su estado habilitado/deshabilitado.

Reiniciar y recargar un servicio

Reinicio completo (detiene y vuelve a iniciar el proceso):

sudo systemctl restart nginx

Recargar configuración sin reiniciar el proceso (compatible con algunos servicios):

sudo systemctl reload nginx

Recargar es preferible para servicios como nginx donde un reinicio corta brevemente las conexiones. No todos los servicios lo soportan.

Habilitar y deshabilitar al inicio

Habilita un servicio para que se inicie automáticamente al arrancar:

sudo systemctl enable nginx

Deshabilítalo:

sudo systemctl disable nginx

Habilitar y arrancar en un solo comando:

sudo systemctl enable --now nginx

Verificar el estado de un servicio

Ver el estado actual y los registros recientes de un servicio:

sudo systemctl status nginx

La salida muestra si está activo o fallido, su PID, uso de memoria y las últimas 10 líneas del diario. Es el primer comando a ejecutar cuando un servicio se comporta de manera inesperada.

Lectura de la salida y registros de systemctl

Interpretación de estados de servicio

Los cinco estados que encontrarás en la salida de list-unit-files:

  • habilitado: El servicio se inicia al arrancar a través de un enlace simbólico en /etc/systemd/system/ o similar.
  • deshabilitado: El servicio no se iniciará al arrancar, pero puede iniciarse manualmente.
  • enmascarado: El servicio está deshabilitado de forma firme. No se puede iniciar ni siquiera manualmente hasta que se desmascare.
  • estático: El servicio no tiene sección de instalación en su archivo de unidad. Solo se ejecuta cuando otra unidad lo requiere.
  • fallido: systemd intentó iniciar el servicio y salió con un error.

Visualización de registros con journalctl

systemd captura toda la salida del servicio en el diario. Ver registros para un servicio específico:

sudo journalctl -u nginx

Sigue la salida en vivo:

sudo journalctl -u nginx -f

Muestra solo las últimas 100 líneas:

sudo journalctl -u nginx -n 100

Mejores prácticas en la gestión de servicios de Linux

  • Audita los servicios en ejecución periódicamente. Cualquier cosa que no instalaste y que no reconozcas debería ser investigada.
  • Enmascara los servicios que nunca quieres que se ejecuten, no solo desactívelos. Deshabilitar deja la puerta abierta para que los paquetes los vuelvan a habilitar.
  • Utiliza enable –now y disable –now para evitar estados de división donde un servicio está habilitado pero no en ejecución.
  • Verifica los servicios fallidos después de cada reinicio: sudo systemctl –failed
  • No reinicies servicios en producción sin verificar primero la opción de recarga. Recargar es menos disruptivo.

Preguntas frecuentes: Lista de servicios de Linux

¿Cómo listar todos los servicios en ejecución en Linux?

Ejecuta: sudo systemctl list-units –type=service –state=running. Esto muestra solo los servicios actualmente activos. Para todos los servicios instalados, independientemente del estado, usa: sudo systemctl list-unit-files –type=service

¿Cómo inicio un servicio en Linux?

Ejecuta: sudo systemctl start service-name. Reemplaza service-name con el nombre real del servicio (por ejemplo, nginx, mysql, sshd). Para habilitarlo también al arranque: sudo systemctl enable –now service-name

¿Cómo habilito un servicio al arrancar?

Ejecuta: sudo systemctl enable service-name. Esto crea los enlaces simbólicos necesarios para que el servicio se inicie automáticamente al arrancar. Para iniciarlo inmediatamente también, agrega –now: sudo systemctl enable –now service-name

¿Cuál es la diferencia entre detener y deshabilitar?

stop halts the service right now but doesn’t change its boot behavior. disable removes the boot symlinks so it won’t start next reboot, but doesn’t affect the currently running instance. To both stop it now and prevent it from starting again, run: sudo systemctl disable --now service-name

Scroll al inicio