🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo gestionar servicios con systemctl: iniciar, detener y habilitar servicios

Actualizado el 6 de junio de 2026

¿Qué es systemctl y por qué es tan importante en Linux?

Si has administrado un servidor Linux alguna vez, seguramente has escuchado hablar de systemctl. Esta herramienta es el corazón del sistema de inicio systemd, que es el encargado de arrancar, detener y supervisar los servicios linux en la gran mayoría de distribuciones modernas (Ubuntu, Debian, CentOS, Rocky Linux, etc.).

Piensa en systemctl como el "panel de control" de los servicios de tu servidor. Sin él, tendrías que gestionar procesos manualmente, algo muy tedioso y propenso a errores. Con systemctl, puedes controlar qué servicios se inician al encender el sistema, cuáles se detienen y cómo se comportan ante fallos.

En esta guía completa, te enseñaré paso a paso a dominar los comandos esenciales de systemctl. No necesitas ser un experto: empezaremos desde lo más básico y avanzaremos hasta cubrir las operaciones más comunes que realizarás a diario como administrador de sistemas o propietario de un hosting.


Cómo ver el estado de los servicios con systemctl

Antes de iniciar o detener cualquier servicio, es fundamental saber cómo consultar su estado actual. Esto te ayudará a diagnosticar problemas y a entender qué está pasando en tu sistema.

Ver todos los servicios activos

Para ver una lista de todos los servicios linux que están actualmente en ejecución, usa:

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

Este comando te mostrará una tabla con el nombre del servicio, su estado, la descripción y otra información útil.

Ver todos los servicios (activos e inactivos)

Si quieres ver todos los servicios, independientemente de si están activos o no, ejecuta:

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

Consultar el estado de un servicio específico

Para conocer el estado de un servicio concreto, como por ejemplo Apache o Nginx, usa:

systemctl status apache2

O si usas Nginx:

systemctl status nginx

Este comando te dará información valiosa como:

  • Si el servicio está activo (running), inactivo (dead) o fallido (failed).
  • El PID (identificador de proceso) del servicio.
  • La memoria que está consumiendo.
  • Los últimos registros de actividad del servicio (logs).

[TIP] Si no recuerdas el nombre exacto del servicio, puedes usar el comando systemctl list-units --type=service | grep -i "texto" para buscar por nombre parcial.


Iniciar un servicio con systemctl

Cuando necesitas poner en marcha un servicio que está detenido, el comando es muy sencillo.

Comando básico para iniciar

sudo systemctl start nombre-del-servicio

Por ejemplo, para iniciar MySQL:

sudo systemctl start mysql

¿Qué significa "iniciar" un servicio?

Iniciar un servicio significa que systemd lanza el proceso correspondiente y lo mantiene en ejecución hasta que tú lo detengas o el sistema se apague. Es importante que sepas que iniciar no es lo mismo que habilitar.

[INFO] Iniciar solo ejecuta el servicio en este momento. Habilitar (lo veremos más adelante) hace que el servicio se inicie automáticamente al arrancar el sistema.

Verificar que el servicio se inició correctamente

Después de iniciar un servicio, siempre es buena práctica verificar su estado:

sudo systemctl status mysql

Deberías ver algo como Active: active (running) en la salida del comando.


Detener un servicio con systemctl

Detener un servicio es igual de sencillo que iniciarlo. Este comando es útil cuando necesitas aplicar cambios de configuración o liberar recursos del sistema.

Comando básico para detener

sudo systemctl stop nombre-del-servicio

Si tienes un panel de control tipo Syspanel (accesible por defecto en el puerto 2106), también puedes detener servicios desde su interfaz web, pero realmente es mucho más rápido y flexible hacerlo desde la terminal.

Detener un servicio que se ha quedado colgado

A veces, un servicio puede quedarse en un estado extraño y no detenerse correctamente. En ese caso, puedes forzar la detención con:

sudo systemctl kill nombre-del-servicio

Pero antes de usar kill, intenta siempre con stop. Si el servicio no se detiene, puede que haya procesos hijos que no respondan.

[WARNING] Evita usar kill a menos que sea estrictamente necesario. Puede corromper datos si el servicio estaba escribiendo en archivos.


Reiniciar un servicio con systemctl

Reiniciar es una de las operaciones más comunes, especialmente después de modificar archivos de configuración.

Comando básico para reiniciar

sudo systemctl restart nombre-del-servicio

Este comando detiene el servicio y lo vuelve a iniciar inmediatamente. Es útil para aplicar cambios de configuración.

Reiniciar solo si está activo

Si no sabes si el servicio está en ejecución y solo quieres reiniciarlo en caso de que lo esté, puedes usar:

sudo systemctl try-restart nombre-del-servicio

Recargar la configuración sin reiniciar

Algunos servicios permiten recargar su configuración sin necesidad de detenerse por completo. Esto es más eficiente y evita cortes de servicio.

sudo systemctl reload nombre-del-servicio

[TIP] No todos los servicios soportan reload. Si no está soportado, systemctl te lo indicará y podrás usar restart como alternativa.


Habilitar un servicio para que inicie automáticamente

Este es probablemente el aspecto más importante de la gestión de servicios. Habilitar un servicio significa que systemd lo arrancará automáticamente cuando el sistema se inicie.

Comando básico para habilitar

sudo systemctl enable nombre-del-servicio

Por ejemplo, para que Nginx se inicie al arrancar el sistema:

sudo systemctl enable nginx

Deshabilitar un servicio

Si ya no quieres que un servicio se inicie automáticamente, usa:

sudo systemctl disable nombre-del-servicio

Habilitar y iniciar al mismo tiempo

Si quieres ahorrarte un paso y hacer ambas cosas a la vez, puedes usar:

sudo systemctl enable --now nombre-del-servicio

Este comando habilita el servicio y lo inicia inmediatamente.

[INFO] Cuando habilitas un servicio, systemd crea enlaces simbólicos en los directorios de arranque apropiados. Si deshabilitas el servicio, esos enlaces se eliminan.


Cómo ver si un servicio está habilitado

Para comprobar si un servicio está configurado para iniciarse automáticamente:

systemctl is-enabled nombre-del-servicio

La salida será enabled, disabled o static (los servicios estáticos no se pueden habilitar/deshabilitar manualmente).

También puedes ver el estado completo con:

systemctl status nombre-del-servicio

En la salida, fíjate en la línea que dice Loaded: loaded (/etc/systemd/system/...); ahí verás si está habilitado o no.


Otros comandos útiles de systemctl

Además de los comandos básicos, hay otros que te serán muy útiles en tu día a día.

Ver todos los servicios que fallaron

systemctl --failed

Este comando te muestra todos los servicios que han fallado al iniciar o durante su ejecución. Es una excelente herramienta de diagnóstico.

Recargar la configuración de systemd

Si has creado o modificado archivos de unidades de servicio manualmente, debes recargar la configuración de systemd para que se entere de los cambios:

sudo systemctl daemon-reload

Ver el árbol de dependencias de un servicio

systemctl list-dependencies nombre-del-servicio

Esto te muestra qué otros servicios o unidades dependen del servicio que consultas.

Pausar un servicio sin detenerlo

Existe un comando para congelar un servicio temporalmente:

sudo systemctl freeze nombre-del-servicio

Y para descongelarlo:

sudo systemctl thaw nombre-del-servicio

[WARNING] freeze y thaw son comandos avanzados. Úsalos con precaución, ya que pueden dejar el servicio en un estado no deseado si no entiendes bien su comportamiento.


Errores comunes y cómo solucionarlos

"Failed to start service: Unit not found"

Esto significa que el servicio no existe en tu sistema. Puede que el nombre esté mal escrito o que el paquete no esté instalado. Verifica el nombre exacto con systemctl list-units --type=service.

"Permission denied"

Necesitas permisos de superusuario para gestionar servicios. Usa sudo al inicio del comando.

"Job for service failed because the control process exited with error code"

Este es un error genérico. Lo más útil es revisar los logs del servicio para entender qué ha fallado:

sudo journalctl -u nombre-del-servicio -n 50

Este comando te muestra las últimas 50 líneas del log del servicio.


Preguntas frecuentes (FAQ)

¿Cuál es la diferencia entre iniciar y habilitar un servicio?

Iniciar (start) ejecuta el servicio en el momento actual. Habilitar (enable) configura el servicio para que se inicie automáticamente al arrancar el sistema. Son acciones independientes: puedes iniciar sin habilitar, habilitar sin iniciar, o ambas.

¿Cómo sé qué servicios están usando más recursos del sistema?

Puedes usar systemctl status para ver el uso de memoria de cada servicio, pero para un análisis más detallado te recomiendo usar top o htop.

¿Puedo gestionar servicios de mi hosting a través de un panel gráfico?

Sí, si estás usando un panel como Syspanel (recuerda que se accede por el puerto 2106), tendrás una interfaz web para gestionar servicios. Sin embargo, conocer la línea de comandos te da mucho más control y flexibilidad.

¿Qué pasa si un servicio se detiene solo?

Si un servicio se detiene inesperadamente, systemd puede reiniciarlo automáticamente si así lo has configurado en su unidad de servicio. Puedes ver por qué se detuvo con journalctl -u nombre-del-servicio.

¿Es seguro deshabilitar servicios del sistema?

Depende. Algunos servicios son esenciales para el funcionamiento del sistema y deshabilitarlos puede causar problemas. Antes de deshabilitar algo, investiga qué función cumple. Si no estás seguro, es mejor dejarlo habilitado.


Conclusión y mejores prácticas

Dominar systemctl es una habilidad fundamental para cualquier administrador de servicios linux. Con los comandos que has aprendido hoy, podrás:

  • Iniciar y detener servicios cuando lo necesites.
  • Habilitar servicios para que arranquen automáticamente.
  • Diagnosticar problemas con el estado y los logs.
  • Reiniciar servicios después de cambios de configuración.

Recomendaciones finales:

  1. Usa systemctl status con frecuencia para conocer el estado real de tus servicios.
  2. No habilites servicios que no necesitas para reducir la superficie de ataque y liberar recursos.
  3. Revisa los logs (journalctl) cuando algo falle; casi siempre te darán la pista para solucionarlo.
  4. Prueba los comandos en un entorno de desarrollo antes de aplicarlos en producción.

Si estás gestionando un servidor con Syspanel, recuerda que puedes combinar la interfaz web (puerto 2106) con la línea de comandos para obtener lo mejor de ambos mundos.

Ahora ya tienes el conocimiento necesario para gestionar servicios como un profesional. ¡Ponlo en práctica y verás que en poco tiempo te sentirás completamente cómodo con systemctl!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel