systemctl: 12 comandos que dominan Linux ๐
El comando systemctl tiene varias funcionalidades que a menudo se pasan por alto. Ademรกs de iniciar y detener servicios en Linux, tambiรฉn podรฉs listar los servicios instalados y verificar en quรฉ estado se encuentran. ยกVamos a hacer un repaso rรกpido! ๐
ยฟQuรฉ Es el Comando systemctl?
El comando systemctl es la herramienta central de gestiรณn del sistema init systemd, conocida principalmente como la herramienta que se usa para iniciar y detener servicios. Pero hay mucho mรกs, como lo demuestra su pรกgina de manual que tiene mรกs de 1600 lรญneas. ๐
Como systemctl es una herramienta de gestiรณn, no solo un lanzador de servicios, podรฉs usarla para acceder a informaciรณn รบtil sobre tu sistema y sus servicios systemd. ๐ป
La mayorรญa de las distribuciones de Linux han adoptado systemd, pero algunas han optado por mantener el sistema init tradicional SystemV. Si no estรกs seguro de cuรกl utiliza tu distribuciรณn, es sencillo averiguarlo. Usaremos el comando stat para mirar el archivo init.
stat /sbin/init 
El archivo ejecutable /sbin/init es el primer proceso que se lanza en las distribuciones basadas en SystemV. En las distribuciones basadas en systemd, un enlace simbรณlico con ese nombre apunta al archivo systemd.
La primera lรญnea de salida nos muestra que en esta mรกquina de prueba con Ubuntu, /sbin/init es un enlace simbรณlico al archivo /lib/systemd/systemd. Claramente, esta instalaciรณn de Linux utiliza systemd. Si se tratara de una distribuciรณn basada en SystemV, la lรญnea solo contendrรญa โFile: /sbin/initโ.
Interrogando Servicios Con systemctl
Los servicios estรกn definidos en archivos de unidad, y verรกs la palabra unidad esparcida por las opciones del systemctl. A modo de ejemplo, podemos obtener una lista de servicios con el comando list-units usando la opciรณn –type.
systemctl list-units --type=service
La salida se visualiza en el visor de archivos less, permitiรฉndote desplazarte y utilizar la tecla / para buscar.
- Unidad: El nombre del archivo de unidad.
- Cargar: Si el archivo de unidad del servicio se ha leรญdo en memoria sin errores de sintaxis, esta columna contendrรก โcargadaโ. Esto no significa que el servicio estรฉ activo.
- Activo: Una vista general de si un servicio estรก activo. Un servicio activo podrรญa no estar ejecutรกndose.
- Sub: Una vista mรกs detallada de si un servicio se estรก ejecutando. Por ejemplo, un servicio activo podrรญa estar programado para un temporizador, y puede haber salido de su รบltima ejecuciรณn.
- Descripciรณn: Una lรญnea de texto destinada a identificar o describir el servicio.
La visualizaciรณn solo incluye servicios activos. Para ver todos los servicios, necesitamos incluir la opciรณn –all.
systemctl list-units --all --type=service
Si ver todo resulta abrumador, podemos filtrar la salida con la opciรณn –state.
systemctl list-units --type=service --state=running
La opciรณn state aceptarรก running, stopped, enabled, disabled, y failed.
Para enfocarte en los servicios fallidos, utilizรก la opciรณn –failed.
systemctl list-units --failed
No hay unidades fallidas en esta computadora.
Si ves algรบn servicio fallido, utilizรก la opciรณn list-dependencies para verificar si hay dependencias no satisfechas.
systemctl list-dependencies sshd.service
Las dependencias tienen un cรญrculo codificado por colores que representa su estado. Puede ser:
- Cรญrculo Blanco: Inactivo o en mantenimiento
- Punto Verde: Activo.
- Punto Blanco: Desactivando.
- Punto Rojo: Fallido o error.
Para verificar si un solo servicio estรก habilitado, usรก el comando is-enabled y proporciona el nombre del archivo de unidad del servicio.
systemctl is-enabled htg-example.service
Controlando Servicios Con systemctl
Usar systemctl para gestionar servicios es muy sencillo y sigue el formato de los comandos que hemos visto hasta ahora. La mayor diferencia es que necesitarรกs usar sudo para hacer cambios en los estados de los servicios. No lo hemos hecho hasta ahora, porque solo hemos estado reportando sobre el estado de los servicios.
Para iniciar un servicio, utilizรก el comando start seguido del nombre del servicio.
sudoย systemctlย startย htg-example.service
Si todo va bien, regresรกs silenciosamente al sรญmbolo del sistema. Si preferรญs tener una confirmaciรณn positiva, podรฉs verificarlo con el comando status.
sudoย systemctlย statusย htg-example.service
Detener un servicio es igualmente sencillo que iniciarlo.
sudoย systemctlย stopย htg-example.service
Podรฉs reiniciar un servicio sin tener que pasar por el proceso de dos pasos de detenerlo y luego iniciarlo. El comando restart lo hace todo por vos.
sudoย systemctlย restartย htg-example.service
Si querรฉs que un servicio se inicie al arrancar, tenรฉs que habilitarlo.
sudoย systemctlย enableย htg-example.service
Nota que esto solo marca el servicio para que se inicie al arrancar, no lo inicia de inmediato. Si eso es lo que querรฉs, aรฑadรญ la opciรณn –now.
sudoย systemctlย enableย --nowย htg-example.service
Cuando ya no necesitรกs que un servicio se inicie al arrancar, deshabilรญtalo.
sudoย systemctlย disableย htg-example.service
Podรฉs usar el comando journalctl, otra parte de systemd, para buscar entradas relacionadas con tu servicio. La opciรณn -u (unidad) te permite especificar el servicio que te interesa. Con la opciรณn -S (desde), podรฉs mostrar entradas que han ocurrido desde el momento que proporciones.
journalctlย -S "08:00:00"ย -uย htg-example.service
Cualquier herramienta que te ayude a obtener informaciรณn sobre el funcionamiento interno de tu distribuciรณn de Linux serรก invaluable, tanto para la gestiรณn diaria como para solucionar y diagnosticar problemas. El comando systemctl no es una sola herramienta. Es mรกs como un cofre de herramientas especializadas, y vale la pena familiarizarse con รฉl. ๐ง๐ ๏ธ




















