- 1 1. Introducción
- 2 2. Cómo mostrar la lista de servicios con systemctl
- 3 3. Operaciones básicas de gestión de servicios con systemctl
- 4 4. Opciones útiles y técnicas avanzadas de systemctl
- 5 5. Problemas frecuentes y cómo resolverlos
- 6 6. Conclusión
- 7 7. Preguntas frecuentes (FAQ)
- 7.1 Q1. ¿Cuál es la diferencia entre systemctl y el comando service?
- 7.2 Q2. ¿En qué se diferencian list-units y list-unit-files?
- 7.3 Q3. ¿Se puede iniciar un servicio en estado static?
- 7.4 Q4. No puedo iniciar un servicio porque está en estado masked. ¿Qué hago?
- 7.5 Q5. ¿Existe alguna forma de ver servicios en una interfaz gráfica?
- 7.6 Q6. Quiero crear un archivo de unidad propio. ¿Dónde lo guardo?
1. Introducción
Al usar Linux, a menudo surge la necesidad de “verificar el estado de un servicio” o “consultar la lista de procesos en ejecución”. En esos casos, el comando systemctl
resulta muy útil.
Este comando está vinculado a systemd, el sistema de inicio y gestor de servicios en Linux, y ofrece una amplia gama de funciones: verificar el estado de los servicios (unidades), iniciarlos, detenerlos, reiniciarlos y mostrarlos en una lista.
En particular, desde la perspectiva de “listar con systemctl”, no solo es posible ver los servicios activos, sino también aquellos deshabilitados, los configurados para inicio automático y más, lo que permite tener una visión completa de la configuración.
En este capítulo, primero resumiremos de manera sencilla qué es systemctl
y explicaremos qué aprenderás en este artículo.
¿Qué es systemctl?
systemctl
es la herramienta estándar para controlar y verificar diversas “unidades” (servicios, objetivos, puntos de montaje, etc.) en distribuciones Linux basadas en systemd.
Por ejemplo, se usa para iniciar o detener servicios como Apache (httpd) o SSH, así como para mostrar sus estados en una lista.
Relación entre systemd y systemctl
systemd es el núcleo del proceso de inicio y la gestión de servicios en Linux, reemplazando a sistemas más antiguos como “SysVinit” o “Upstart”. El comando que permite interactuar con systemd desde la terminal es systemctl
.
En otras palabras, si systemd es el “centro de control”, systemctl
actúa como el “operador” que ejecuta sus órdenes.
Qué aprenderás en este artículo
En este artículo encontrarás respuestas a preguntas como:
- ¿Cómo verificar la lista de servicios en ejecución actualmente?
- ¿Cómo mostrar todos los servicios, incluso los inactivos?
- ¿Cómo comprobar si un servicio está configurado para inicio automático?
- ¿Cómo interpretar los resultados listados?
El artículo incluye ejemplos de comandos y explicaciones claras de sus salidas para que incluso principiantes en Linux puedan entenderlos fácilmente. ¡Acompáñanos hasta el final!
2. Cómo mostrar la lista de servicios con systemctl
En la administración de sistemas Linux, identificar rápidamente la lista de servicios es muy importante. Con el comando systemctl
, no solo puedes comprobar los servicios activos, sino también los inactivos y su configuración de inicio automático.
A continuación, explicamos cómo listar los servicios desde tres enfoques principales:
- Lista de servicios activos
- Lista de todos los servicios (incluidos los inactivos)
- Lista de archivos de unidad de servicio (incluyendo configuración de inicio)
2.1 Mostrar la lista de servicios activos
La forma más básica de usar este comando es consultar los servicios que están actualmente “en ejecución” en el sistema. Para ello:
systemctl list-units --type=service
Este comando muestra los servicios activos. La salida incluye los siguientes campos:
Campo | Significado |
---|---|
UNIT | Nombre del servicio (ej: ssh.service) |
LOAD | Indica si el archivo de unidad está cargado |
ACTIVE | Estado general del servicio (ej: active, inactive, failed) |
SUB | Estado más detallado (ej: running, exited, dead) |
DESCRIPTION | Descripción del servicio |
Con esta información puedes comprobar, por ejemplo, si nginx está en funcionamiento o qué servicios están activos actualmente.
2.2 Mostrar todos los servicios, incluidos los inactivos
Por defecto, list-units
solo muestra los servicios activos. Si quieres ver también los inactivos, añade la opción --all
:
systemctl list-units --type=service --all
Con esta opción, la lista incluirá servicios en estado “inactive” o incluso aquellos que nunca se han iniciado.
Si deseas filtrar aún más, puedes usar la opción --state=
para mostrar únicamente servicios en un estado específico.
systemctl list-units --type=service --state=inactive
De esta forma puedes, por ejemplo, listar solamente los servicios detenidos.
2.3 Consultar la lista de archivos de unidad de servicio
Si además de saber el estado actual quieres comprobar qué servicios están habilitados para arrancar automáticamente, utiliza el siguiente comando:
systemctl list-unit-files --type=service
Este comando muestra todos los archivos de unidad de servicio (archivos .service
) y su estado de habilitación (enabled/disabled, etc.).
Valor de STATE | Significado |
---|---|
enabled | Se activa automáticamente al inicio |
disabled | No se inicia al arranque; requiere inicio manual |
static | Depende de otras unidades; no puede habilitarse o deshabilitarse directamente |
masked | Está deshabilitado explícitamente y no puede iniciarse (bloqueado) |
Esto permite identificar qué servicios arrancan con el sistema y si alguno ha sido bloqueado accidentalmente.
3. Operaciones básicas de gestión de servicios con systemctl
El comando systemctl
no solo sirve para verificar estados, sino también para iniciar, detener, reiniciar y configurar servicios. Aquí veremos las operaciones más comunes para la administración diaria de servidores.
3.1 Iniciar un servicio
Para iniciar un servicio manualmente:
sudo systemctl start nombre-del-servicio
Ejemplo:
sudo systemctl start httpd.service
Esto inicia el servicio de inmediato, pero si quieres que se mantenga activo tras reiniciar el sistema, también debes usar enable
.
3.2 Detener un servicio
Para detener un servicio en ejecución:
sudo systemctl stop nombre-del-servicio
Ejemplo:
sudo systemctl stop sshd.service
El servicio permanecerá detenido hasta que se ejecute nuevamente start
.
3.3 Reiniciar un servicio
Cuando se aplican cambios de configuración, es útil reiniciar un servicio:
sudo systemctl restart nombre-del-servicio
Ejemplo:
sudo systemctl restart nginx.service
Esto detiene el servicio y lo vuelve a iniciar en un solo paso.
3.4 Consultar el estado de un servicio
Para ver información detallada de un servicio:
systemctl status nombre-del-servicio
Ejemplo:
systemctl status mysql.service
El resultado incluye estado activo, PID del proceso y registros recientes, muy útil para diagnosticar problemas.
3.5 Habilitar el inicio automático de un servicio
Si quieres que un servicio arranque automáticamente con el sistema, usa:
sudo systemctl enable nombre-del-servicio
Ejemplo:
sudo systemctl enable docker.service
3.6 Deshabilitar el inicio automático
Para evitar que un servicio arranque automáticamente:
sudo systemctl disable nombre-del-servicio
Ejemplo:
sudo systemctl disable cups.service
3.7 Verificar si un servicio está habilitado
Para comprobar si un servicio está configurado para inicio automático:
systemctl is-enabled nombre-del-servicio
Ejemplo de salida:
enabled
Esto permite confirmar rápidamente la política de arranque de un servicio.
4. Opciones útiles y técnicas avanzadas de systemctl
El comando systemctl
no solo sirve para operaciones básicas como iniciar o detener servicios, sino también para tareas más avanzadas y útiles. A continuación, se presentan algunas funciones adicionales que pueden hacer la administración de servicios en Linux más eficiente.
4.1 Listar las dependencias de un servicio
En Linux, muchos servicios dependen de otros para funcionar. Para ver esas dependencias, utiliza:
systemctl list-dependencies nombre-del-servicio
Ejemplo:
systemctl list-dependencies nginx.service
Esto muestra en estructura jerárquica las unidades relacionadas, lo que ayuda a entender el orden de arranque y el impacto de cada servicio.
4.2 Mostrar el contenido de un archivo de unidad
Si quieres ver la configuración exacta de un servicio, puedes consultar el archivo de unidad con:
systemctl cat nombre-del-servicio
Ejemplo:
systemctl cat ssh.service
Este comando muestra la ruta y el contenido del archivo .service
cargado, permitiendo verificar personalizaciones o configuraciones aplicadas.

4.3 Recargar los archivos de unidad
Cuando se modifican manualmente archivos de unidad, es necesario recargar systemd para aplicar los cambios. Esto se hace con:
sudo systemctl daemon-reexec
O de manera más común:
sudo systemctl daemon-reload
Esto obliga a systemd a releer los archivos de configuración. Si notas que un cambio no surte efecto, este es el primer paso a probar.
4.4 Consultar los registros de un servicio (nota adicional)
Aunque systemctl
no gestiona directamente los registros, puedes ver los logs relacionados con un servicio usando journalctl
:
journalctl -u nombre-del-servicio
Ejemplo:
journalctl -u docker.service
Esto muestra errores de arranque, reinicios e historial de ejecución, información esencial para resolver problemas.
5. Problemas frecuentes y cómo resolverlos
Al gestionar servicios con systemctl
, es posible que encuentres errores o comportamientos inesperados. En este capítulo veremos los problemas más comunes y cómo solucionarlos paso a paso.
5.1 Cuando un servicio no inicia
Si al intentar iniciar un servicio aparece un error como este:
Job for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
Debes seguir esta secuencia de verificación:
- Comprobar el estado del servicio
systemctl status nombre-del-servicio
- Revisar los registros de error
journalctl -xe
- Recargar los archivos de unidad
Si acabas de modificar configuraciones:
sudo systemctl daemon-reload
- Comprobar conflictos de puertos
Verifica si otro proceso usa el mismo puerto:
sudo netstat -tulnp | grep número-de-puerto
5.2 Cómo leer los mensajes de error con status
El comando systemctl status
no solo muestra el estado, también incluye los últimos mensajes del registro. Ejemplo:
● 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) since Fri 2025-04-18 12:00:00 JST; 5s ago
Process: 12345 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
Aquí podemos ver “Active: failed” y “status=1/FAILURE”, lo que indica claramente que el servicio falló. Además, en la línea “Loaded” aparece la ruta del archivo de unidad, útil para editar y corregir configuraciones.
5.3 Cuando un servicio se detiene automáticamente
Si un servicio arranca pero se detiene poco después, las causas más probables son:
- Errores en el archivo de configuración
- Conflicto de puertos
- Falta de archivos o directorios necesarios
- Permisos insuficientes
En estos casos, las soluciones recomendadas son:
- Revisar y validar la configuración con comandos como
nginx -t
oapachectl configtest
- Analizar registros con
journalctl -u nombre-del-servicio
- Verificar directorios (ejemplo:
/var/run/xxx
) y crearlos si faltan
5.4 Cuando un servicio está en estado masked
Si al ejecutar systemctl start
aparece el siguiente error:
Failed to start example.service: Unit example.service is masked.
Esto significa que el servicio está en estado masked
(bloqueado). Para desbloquearlo:
sudo systemctl unmask nombre-del-servicio
Después de eso, podrás iniciarlo normalmente con start
.
6. Conclusión
La gestión de servicios en Linux es una de las tareas más importantes en la administración diaria de sistemas. El comando systemctl
desempeña un papel central, ya que permite listar, controlar y supervisar servicios para tener siempre una visión clara del sistema.
En este artículo, usando la palabra clave “systemctl lista”, hemos explicado los siguientes puntos:
Lo que puedes hacer con systemctl (resumen)
- Ver listas de servicios
- Mostrar servicios activos (
list-units --type=service
) - Incluir servicios inactivos (
--all
o--state=
) - Consultar archivos de unidad y su estado de arranque (
list-unit-files
) - Operaciones básicas
- Iniciar, detener, reiniciar y comprobar estado (start / stop / restart / status)
- Configurar inicio automático (enable / disable / is-enabled)
- Operaciones avanzadas y resolución de problemas
- Ver dependencias, mostrar archivos de unidad, recargar configuraciones
- Analizar errores mediante registros (
journalctl
) y estado
Buenas prácticas en la gestión de servicios
- Verificar estado antes de operar (siempre revisar con
status
) - Comprobar inicio automático (
is-enabled
) - Ejecutar
daemon-reload
tras cambios de configuración - Consultar registros con
journalctl
en caso de errores
En la administración de Linux, estas prácticas sistemáticas ayudan a mantener servicios estables y a reducir el tiempo de resolución de incidencias.
Para seguir aprendiendo
Si quieres profundizar más, te recomendamos explorar:
- Los “targets” de systemd (comparación con runlevels)
- Uso de
systemd-timer
para programar tareas - Cómo crear y gestionar archivos de unidad personalizados
7. Preguntas frecuentes (FAQ)
A continuación, resolvemos dudas comunes sobre systemctl
y la gestión de servicios.
Q1. ¿Cuál es la diferencia entre systemctl
y el comando service
?
A1.systemctl
es el comando estándar en sistemas basados en systemd (Ubuntu, CentOS, Fedora, etc.).
En cambio, service
pertenece al sistema SysVinit, usado en versiones antiguas. Aunque a veces se mantiene por compatibilidad, en entornos modernos se recomienda usar systemctl
.
Q2. ¿En qué se diferencian list-units
y list-unit-files
?
A2.
list-units
: muestra las unidades cargadas actualmente (activas o que se usaron en la sesión).list-unit-files
: muestra todos los archivos de unidad disponibles y su estado (enabled, disabled, etc.).
En resumen: el primero muestra “lo que está funcionando ahora” y el segundo “la configuración definida”.
Q3. ¿Se puede iniciar un servicio en estado static
?
A3.
Sí, un servicio en estado static
se puede iniciar manualmente con start
. Sin embargo, no se puede habilitar con enable
, porque está diseñado para arrancar solo como dependencia de otros servicios.
Q4. No puedo iniciar un servicio porque está en estado masked
. ¿Qué hago?
A4.
Un servicio en estado masked
está completamente bloqueado. Para habilitarlo de nuevo:
sudo systemctl unmask nombre-del-servicio
Después, podrás iniciarlo con start
.
Q5. ¿Existe alguna forma de ver servicios en una interfaz gráfica?
A5.
Sí, dependiendo de la distribución puedes usar herramientas como gnome-system-monitor
, KSysGuard
o Cockpit
. Sin embargo, para operaciones avanzadas (habilitar, deshabilitar, diagnosticar) lo más seguro sigue siendo systemctl
.
Q6. Quiero crear un archivo de unidad propio. ¿Dónde lo guardo?
A6.
Normalmente, se colocan en /etc/systemd/system/
. Después de crearlo o editarlo, ejecuta:
sudo systemctl daemon-reload
Así el nuevo archivo quedará registrado y podrás gestionarlo con start
, enable
, etc.