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 lista-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.
- Beskrivning: 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 lista-units --all --type=service

Si ver todo resulta abrumador, podemos filtrar la salida con la opciĂłn –state.
systemctl lista-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 lista-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 lista-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.
Jag svettas 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.
Jag svettas systemctl status htg-example.service

Detener un servicio es igualmente sencillo que iniciarlo.
Jag svettas 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.
Jag svettas systemctl restart htg-example.service

Si querés que un servicio se inicie al arrancar, tenés que habilitarlo.
Jag svettas 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.
Jag svettas systemctl enable --now htg-example.service

Cuando ya no necesitĂĄs que un servicio se inicie al arrancar, deshabilĂtalo.
Jag svettas 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. đ§đ ïž