systemctl: Control total en Linux con 12 pasos 🔥

systemctl 12 comandos que dominan Linux

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 
Usando el comando stat para ver si una instalación de Linux usa SystemV o systemd.

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 del comando systemctl list-units, mostrando servicios en ejecución y detenidos.

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
La salida del comando systemctl list-units, mostrando todos los servicios.

Si ver todo resulta abrumador, podemos filtrar la salida con la opción –state.

systemctl list-units --type=service --state=running
La salida del comando systemctl list-units, filtrada para mostrar solo servicios en ejecución.

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
La salida del comando systemctl list-units, filtrada para mostrar solo servicios fallidos. No hay servicios fallidos.

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
La salida del comando systemctl list-dependencies mostrando las dependencias para el servicio sshd.

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
Usando systemctl is-enabled para determinar si un servicio específico está habilitado.

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
Iniciando un servicio con el comando systemctl start.

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
Verificando el estado de un servicio con el comando systemctl status.

Detener un servicio es igualmente sencillo que iniciarlo.

sudo systemctl stop htg-example.service
Deteniendo un servicio con el comando systemctl stop.

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
Reiniciando un servicio con el comando systemctl restart.

Si querés que un servicio se inicie al arrancar, tenés que habilitarlo.

sudo systemctl enable htg-example.service
Habilitando un servicio con el comando systemctl enable.

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
Habilitando e iniciando un servicio al mismo tiempo con el comando systemctl enable --now.

Cuando ya no necesitás que un servicio se inicie al arrancar, deshabilítalo.

sudo systemctl disable htg-example.service
Deshabilitando un servicio con el comando systemctl disable.

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
Usando el comando journalctl para mostrar entradas de registro del sistema relacionadas con un servicio específico.

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. 🔧🛠️

5 1 votar
Article Rating
Suscribirse
Notificar de
guest

0 Comments
Más antiguo
El más nuevo Más votado
Comentarios en línea
Ver todos los comentarios