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
restartconreload. - Pensar que
enableinicia 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
- Consulta el estado del servicio SSH mediante
systemctl status ssh. - Lista todos los servicios activos utilizando
systemctl list-units --type=service. - Comprueba si un servicio está configurado para iniciarse automáticamente con
systemctl is-enabled. - Reinicia un servicio (por ejemplo, Apache o Nginx) si está instalado.
- Compara la salida de
systemctl statusconps auxpara localizar el proceso asociado. - Investiga qué ocurre si ejecutas
enabley 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.