Lista de servicios de systemctl: cómo ver, gestionar y solucionar problemas de servicios Linux

.## 1. Introducción

Al usar Linux, hay muchas situaciones en las que deseas comprobar el estado de los servicios o ver una lista de procesos en ejecución. En esos casos, el comando systemctl es extremadamente útil.

Este comando funciona con systemd, el sistema de inicio y gestor de servicios utilizado en las distribuciones Linux modernas. Proporciona una amplia gama de funciones, incluyendo la comprobación del estado de los servicios (unidades), iniciar, detener, reiniciar servicios y mostrar listas de servicios.

Desde la perspectiva de una “lista de servicios systemctl”, puedes no solo ver los servicios activos actualmente, sino también los servicios deshabilitados y aquellos configurados para el inicio automático, lo que te permite comprender la configuración general del sistema desde múltiples ángulos.

Este capítulo explica brevemente qué es systemctl y describe lo que aprenderás en este artículo.

目次

¿Qué es systemctl?

systemctl es la herramienta estándar para controlar e inspeccionar diversas “unidades” como servicios, objetivos y puntos de montaje en distribuciones Linux basadas en systemd.

Por ejemplo, se usa para iniciar o detener servicios como Apache (httpd) y SSH, así como para mostrar su estado en forma de lista.

La relación entre systemd y systemctl

systemd es el mecanismo central responsable de los procesos de inicio de Linux y la gestión de servicios, reemplazando sistemas más antiguos como SysVinit y Upstart. La herramienta de línea de comandos utilizada para interactuar con systemd es systemctl.

En otras palabras, si systemd es el centro de mando, systemctl actúa como el operador que emite instrucciones.

Qué aprenderás en este artículo

Este artículo responde a las siguientes preguntas:

  • ¿Cómo puedes ver una lista de los servicios que se están ejecutando actualmente?
  • ¿Cómo mostrar todos los servicios, incluidos los inactivos?
  • ¿Cómo comprobar si un servicio se inicia automáticamente al arrancar?
  • ¿Cómo interpretar la salida de las listas de servicios?

Para garantizar claridad para los principiantes de Linux, se proporcionan ejemplos de comandos y explicaciones detalladas de la salida.

2. Cómo mostrar una lista de servicios con systemctl

En la administración de sistemas Linux, comprender rápidamente la lista de servicios es extremadamente importante. Con el comando systemctl, puedes verificar fácilmente los servicios activos, los inactivos y la configuración de inicio.

Esta sección explica los métodos de listado de servicios desde las siguientes tres perspectivas:

  • Lista de servicios activos
  • Lista de todos los servicios (incluidos los inactivos)
  • Lista de archivos de unidades de servicio (incluidos los ajustes de inicio)

2.1 Mostrar una lista de los servicios activos actualmente

Para comprobar los servicios que se están ejecutando en este momento, usa el siguiente comando:

systemctl list-units --type=service

Este comando muestra una lista de los servicios activos. La salida incluye los siguientes campos:

FieldDescription
UNITService name (e.g., ssh.service)
LOADWhether the unit file is loaded
ACTIVEService state (e.g., active, inactive, failed)
SUBMore detailed status (e.g., running, exited, dead)
DESCRIPTIONService description

Esta información te permite determinar, por ejemplo, si nginx está en ejecución o qué servicios están activos actualmente.

2.2 Mostrar todos los servicios, incluidos los inactivos

Por defecto, list-units muestra solo los servicios activos. Para incluir los servicios inactivos, agrega la opción --all.

systemctl list-units --type=service --all

Esto muestra los servicios inactivos y aquellos que nunca se han iniciado.

Puedes filtrar aún más los resultados por estado del servicio usando la opción --state=:

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

Esto es útil cuando deseas ver solo los servicios detenidos.

2.3 Ver una lista de archivos de unidades de servicio

Para comprobar qué servicios están habilitados o deshabilitados al iniciar, usa el siguiente comando:

systemctl list-unit-files --type=service

Este comando muestra todos los archivos de unidades de servicio junto con sus estados habilitado o deshabilitado.

STATEDescription
enabledAutomatically starts at boot
disabledDoes not start automatically
staticCannot be enabled or disabled manually
maskedExplicitly disabled and cannot be started

Esta lista te ayuda a comprender visualmente qué servicios se inician al arrancar y a identificar servicios que hayan sido enmascarados por error.

3. Gestión básica de servicios con systemctl

El comando systemctl te permite iniciar, detener, reiniciar servicios y configurar su comportamiento de inicio.

3.1 Iniciar un servicio

sudo systemctl start service-name

Ejemplo:

sudo systemctl start httpd.service

3.2 Detener un Servicio

sudo systemctl stop service-name

Ejemplo:

sudo systemctl stop sshd.service

3.3 Reiniciar un Servicio

sudo systemctl restart service-name

Ejemplo:

sudo systemctl restart nginx.service

3.4 Verificar el Estado de un Servicio

systemctl status service-name

Ejemplo:

systemctl status mysql.service

3.5 Habilitar Inicio Automático

sudo systemctl enable service-name

Ejemplo:

sudo systemctl enable docker.service

3.6 Deshabilitar Inicio Automático

sudo systemctl disable service-name

Ejemplo:

sudo systemctl disable cups.service

3.7 Verificar el Estado de Inicio

systemctl is-enabled service-name
enabled

4. Opciones Útiles de systemctl y Técnicas Avanzadas

4.1 Listar Dependencias de Servicios

systemctl list-dependencies service-name

4.2 Ver Contenidos de Archivos de Unidad

systemctl cat service-name

4.3 Recargar Archivos de Unidad

sudo systemctl daemon-reexec
sudo systemctl daemon-reload

4.4 Ver Registros de Servicios

journalctl -u service-name

5. Problemas Comunes y Solución de Problemas

5.1 Cuando un Servicio Falla al Iniciarse

systemctl status service-name
journalctl -xe

5.2 Entender Mensajes de Error en la Salida de status

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: failed (Result: exit-code)

5.3 Servicios que se Detienen Inmediatamente Después de Iniciarse

  • Errores de configuración
  • Conflictos de puertos
  • Archivos o directorios faltantes
  • Permisos insuficientes

5.4 Cuando un Servicio Está Enmascarado

sudo systemctl unmask service-name

6. Resumen

La gestión de servicios es una parte esencial de las operaciones del sistema Linux, y systemctl juega un papel central en el control y comprensión de los servicios del sistema.

7. Preguntas Frecuentes (FAQ)

Esta sección responde preguntas comunes sobre systemctl y la gestión de servicios.

Q1. ¿Cuál es la diferencia entre systemctl y el comando service?

A1.
systemctl es un comando de gestión de servicios diseñado para sistemas basados en systemd y es la herramienta estándar utilizada por la mayoría de las distribuciones modernas de Linux, como Ubuntu, CentOS y Fedora.
En contraste, el comando service se usaba con sistemas basados en SysVinit más antiguos. Aunque puede seguir existiendo por razones de compatibilidad, se recomienda encarecidamente usar systemctl en entornos systemd.

Q2. ¿Cuál es la diferencia entre list-units y list-unit-files?

A2.

  • list-units muestra las unidades cargadas actualmente, es decir, servicios que están ejecutándose o que se han usado recientemente.
  • list-unit-files muestra todos los archivos de unidad y su estado de habilitación (habilitado, deshabilitado, etc.). En resumen, uno muestra lo que está activo actualmente, mientras que el otro muestra cómo están configurados los servicios.

Q3. ¿Se pueden iniciar servicios en un estado estático?

A3.
Sí, los servicios en un estado static se pueden iniciar manualmente usando start. Sin embargo, no se pueden habilitar para inicio automático al arrancar.
Esto se debe a que los servicios estáticos están diseñados para iniciarse como dependencias de otras unidades.

Q4. Un servicio está enmascarado y no se puede iniciar. ¿Qué debo hacer?

A4.
Un servicio masked está completamente deshabilitado y no se puede iniciar. Para resolverlo, desmascare el servicio usando el siguiente comando:

sudo systemctl unmask service-name

Después de desmascararlo, puede iniciar el servicio normalmente.

Q5. ¿Existe un método GUI para ver el estado de un servicio?

A5.
Dependiendo de la distribución, herramientas como gnome-system-monitor, KSysGuard o Cockpit permiten ver el estado de los servicios a través de una interfaz gráfica.
Sin embargo, para operaciones avanzadas como habilitar o deshabilitar servicios al inicio, systemctl sigue siendo el método más confiable.

Q6. ¿Dónde debo colocar los archivos de unidad personalizados?

A6.
Los archivos de unidad personalizados se colocan típicamente en /etc/systemd/system/. Después de editar o agregar un archivo de unidad, siempre ejecute el siguiente comando:

sudo systemctl daemon-reload

Luego, puede administrar el servicio normalmente usando start o enable.