Linux systemctl: Comprobar y Gestionar Servicios
systemctl es un comando para comprobar el estado de los servicios y otras unidades gestionadas por systemd, iniciarlas o detenerlas, y establecer si están habilitadas al inicio. El estado actual de ejecución y el estado habilitado al arranque son diferentes, por lo que cada uno debe comprobarse por separado.
Antes de Iniciar
systemd es el gestor de sistemas y servicios para Linux, y las unidades que administra incluyen no solo servicios (.service) sino también temporizadores y sockets. Este artículo explica cómo gestionar los servicios del sistema en Linux usando systemd. No puede usarse tal cual en entornos con otros sistemas de inicialización o donde systemd no esté en funcionamiento. Para obtener comandos detallados, consulte el manual oficial de systemctl.
El siguiente apache2.service es un ejemplo cuando Apache está instalado en Ubuntu. Si no está instalado, la unidad no se puede encontrar, y el nombre puede variar según la distribución. Antes de practicar, verifique el nombre real del servicio, y dado que detener un servidor web operativo o un servicio de acceso remoto puede desconectar su conexión, use un entorno de prueba seguro. Comprobar el estado a menudo es posible como usuario normal, pero cambiar los servicios del sistema generalmente requiere privilegios de administrador.
Comprobando el estado y el nombre del servicio
Verifique los servicios cargados actualmente y los archivos de unidad de servicio instalados por separado. Las dos listas tienen criterios diferentes, por lo que los resultados pueden no ser los mismos.
systemctl list-units --type=service --all
systemctl list-unit-files --type=service
El primero muestra los servicios cargados en systemd, incluyendo las unidades inactivas. El segundo muestra los archivos de unidad de servicio instalados y su estado habilitado, lo que también es útil para encontrar servicios que aún no se han cargado. Si la lista es larga y se abre el paginador, presione q para salir.
Por ejemplo, para verificar el estado y los registros recientes del servicio Apache, ingrese lo siguiente.
systemctl status apache2.service
systemctl is-active apache2.service
systemctl is-enabled apache2.service
En la salida de status, Active: active (running) significa que el servicio se está ejecutando actualmente, inactive significa inactivo, y failed significa fallido. Los estados detallados varían según el tipo de servicio. is-active verifica el estado actual, y is-enabled verifica el estado de habilitación. Las unidades static no se pueden habilitar de la manera habitual, pero pueden ser iniciadas por otras unidades.
Inicio, parada, reinicio del servicio
Los siguientes comandos realmente cambian el estado del servicio. Reemplace el nombre de servicio de ejemplo por el que sea adecuado para su sistema, y asegúrese de que detener el servicio sea aceptable antes de ejecutarlo.
sudo systemctl start apache2.service
sudo systemctl stop apache2.service
sudo systemctl restart apache2.service
start inicia el servicio, y stop lo detiene. restart detiene el servicio y luego lo reinicia, y puede iniciar un servicio detenido. Ejecute solo el comando necesario. Después de cada operación, verifique el resultado con systemctl status apache2.service. Incluso para servicios que ya están en ejecución, las conexiones pueden interrumpirse temporalmente durante un reinicio.
Si el servicio admite la recarga de sus propios ajustes, puede volver a aplicar los ajustes con sudo systemctl reload apache2.service. El soporte y el método de aplicación varían según cada servicio. Recargar y reiniciar no son la misma acción, y cómo verificar los ajustes debe seguir la documentación del servicio.
Activación al arranque y estado actual en ejecución
Los siguientes comandos configuran o eliminan la conexión para que las unidades se inicien durante el proceso de arranque, etc. Ejecutar enable solo no inicia nada de inmediato, y ejecutar disable solo no detiene inmediatamente los servicios que ya se están ejecutando.
sudo systemctl enable apache2.service
sudo systemctl disable apache2.service
systemctl is-enabled apache2.service
Seleccione y ejecute solo los comandos necesarios, y verifique los resultados con el último comando. enabled indica habilitado y disabled indica deshabilitado. Sin embargo, los servicios aún pueden iniciarse debido a dependencias de otras unidades o sockets/timers, así que no interprete desactivar como bloquear todas las rutas de inicio.
Para activar e iniciar de inmediato, use sudo systemctl enable --now apache2.service; para desactivar y detener de inmediato, use sudo systemctl disable --now apache2.service. Verifique los efectos de cada comando y practique solo en un entorno de prueba.
Qué verificar cuando ocurren problemas
Verifique la lista de unidades fallidas y los registros recientes de servicios específicos. Los registros pueden contener información sensible, así que revise el contenido antes de compartirlo.
systemctl --failed
sudo journalctl -u apache2.service -n 50 --no-pager
Si no se puede encontrar el servicio, verifique su nombre y si está instalado. Si el inicio falla, revise status y los registros en busca de errores de configuración, servicios dependientes, conflictos de puertos o problemas de permisos. El estado masked indica que el inicio está bloqueado, por lo que no quite el enmascaramiento sin identificar la causa. Los mensajes y soluciones pueden variar según la distribución y la configuración del servicio.
Si ha cambiado el archivo de unidad
Si ha modificado el archivo de unidad de systemd o la configuración adicional, use el siguiente comando para que systemd vuelva a leer las definiciones de unidad.
sudo systemctl daemon-reload
Este comando no reinicia el servicio en sí ni hace que el servicio recargue sus archivos de configuración. Si necesita aplicar los cambios a un servicio en ejecución, puede ser necesario un reinicio o recarga separados adecuados para el servicio y los cambios. Haga una copia de seguridad de la configuración antes de realizar cambios y asegúrese de saber cómo volver al estado original.




