Comando systemctl

systemctl

El comando systemctl permite administrar los servicios y otros componentes gestionados por systemd. Con él es posible iniciar, detener, reiniciar, habilitar o consultar el estado de los servicios del sistema.

Categoría Procesos y servicios
Disponible en Distribuciones Linux con systemd.
Equivalente en Windows sc o la consola Servicios (services.msc).
¿Requiere permisos de administrador? Sí para iniciar, detener, reiniciar o modificar servicios. No para consultar información.

¿Qué significa su nombre?

systemctl significa System Control (control del sistema).

Es la herramienta principal para comunicarse con systemd, el sistema de inicialización utilizado por la mayoría de las distribuciones Linux modernas.

¿Para qué sirve?

Permite administrar los servicios del sistema, consultar su estado y configurar cuáles se ejecutarán automáticamente al arrancar el equipo.

Es uno de los comandos más utilizados por administradores de sistemas.

Sintaxis

systemctl [acción] [servicio]

Comandos más utilizados

Comando Descripción
systemctl status apache2 Muestra el estado de un servicio.
sudo systemctl start apache2 Inicia un servicio.
sudo systemctl stop apache2 Detiene un servicio.
sudo systemctl restart apache2 Reinicia un servicio.
sudo systemctl reload apache2 Recarga la configuración sin reiniciar completamente.
systemctl is-active apache2 Comprueba si un servicio está activo.
systemctl is-enabled apache2 Comprueba si arranca automáticamente.
sudo systemctl enable apache2 Activa el inicio automático.
sudo systemctl disable apache2 Desactiva el inicio automático.
systemctl list-units --type=service Lista todos los servicios activos.
systemctl list-unit-files Muestra todos los servicios instalados.

Equivalencia con otros sistemas

Linux Windows
systemctl status sc query
systemctl start net start
systemctl stop net stop
systemctl restart Reiniciar el servicio desde services.msc o PowerShell.

Ejemplos de uso

Consultar el estado de un servicio

systemctl status ssh

Iniciar un servicio

sudo systemctl start apache2

Reiniciar un servicio

sudo systemctl restart NetworkManager

Ver todos los servicios activos

systemctl list-units --type=service

Ejemplo de salida

● ssh.service - OpenSSH Server
     Loaded: loaded (/usr/lib/systemd/system/ssh.service)
     Active: active (running)
     Main PID: 721

¿Cómo interpretar la salida?

Los campos más importantes son:

  • Loaded: indica si el servicio está instalado.
  • Active: muestra si está activo, detenido o ha fallado.
  • Main PID: proceso principal del servicio.

Errores habituales

  • Olvidar utilizar sudo.
  • Confundir restart con reload.
  • Pensar que enable inicia inmediatamente el servicio.
  • Intentar administrar un servicio cuyo nombre es incorrecto.

Conceptos relacionados

  • Servicio
  • Daemon
  • systemd
  • Proceso
  • Inicio automático

Comandos relacionados

Comando Relación
service Herramienta utilizada en sistemas antiguos.
journalctl Consulta los registros de los servicios.
ps Muestra el proceso asociado al servicio.
kill Finaliza procesos manualmente.

Comandos que suelen confundirse

Comando Diferencia
start Inicia un servicio detenido.
restart Lo detiene y lo vuelve a iniciar.
reload Recarga la configuración sin detener el servicio.
enable Hace que arranque automáticamente al iniciar el sistema.
disable Impide que arranque automáticamente.

Uso habitual en administración de sistemas

systemctl status ssh

sudo systemctl restart apache2

sudo systemctl enable ssh

systemctl list-units --type=service

¿Cuándo lo utilizaría un administrador de sistemas?

  • Después de modificar un archivo de configuración.
  • Para comprobar si un servicio está funcionando.
  • Tras instalar un servidor web o una base de datos.
  • Para configurar qué servicios arrancan automáticamente.
  • Durante tareas de mantenimiento y resolución de incidencias.

Curiosidades

Antes de la aparición de systemd, muchas distribuciones Linux utilizaban sistemas de inicio como SysVinit o Upstart. En ellos se administraban los servicios mediante el comando service. Hoy en día, systemctl es el estándar en la mayoría de las distribuciones.


Prácticas propuestas

  1. Consulta el estado del servicio SSH mediante systemctl status ssh.
  2. Lista todos los servicios activos utilizando systemctl list-units --type=service.
  3. Comprueba si un servicio está configurado para iniciarse automáticamente con systemctl is-enabled.
  4. Reinicia un servicio (por ejemplo, Apache o Nginx) si está instalado.
  5. Compara la salida de systemctl status con ps aux para localizar el proceso asociado.
  6. Investiga qué ocurre si ejecutas enable y reinicias el equipo.

Consejo: Una regla muy útil para recordar los comandos es: status → consultar, start → iniciar, stop → detener, restart → reiniciar, enable → arrancar automáticamente y disable → impedir el arranque automático.