Forma correcta de usar systemctl de Ubuntu para controlar systemd

Gestionar un servicio o grupo de servicios en una PC Linux moderna puede ser complicado, es decir, si no estás seguro de lo que estás haciendo. Por suerte para ti, Ubuntu Systemctl te tiene cubierto para gestionar servicios en una PC Linux.

En este tutorial, aprenderás cómo gestionar los servicios de Systemd en una PC Ubuntu ejecutando diferentes comandos systemctl.

¿Listo? ¡Es hora de empezar!

Requisitos previos

Este tutorial será una demostración práctica pero no requiere herramientas especiales, siempre y cuando estés en Ubuntu 16 o una versión superior, estás listo para continuar. Este tutorial utiliza la versión LTS 20.04.3 de Ubuntu para las demostraciones.

¿Qué es Ubuntu Systemctl?

Antes de ejecutar comandos systemctl en Ubuntu, primero conoce qué es Systemctl. Systemctl es una utilidad de línea de comandos para controlar y gestionar systemd y los servicios del sistema.

En pocas palabras, Systemctl es un panel de control o gestor de servicios para el sistema de inicialización init systemd para inicializar componentes después de que se haya iniciado el kernel de Linux. Systemctl es una colección de bibliotecas, demonios y utilidades que puedes usar para gestionar servicios.

Para gestionar servicios de forma efectiva, conoce los diferentes estados de servicio de la siguiente manera:

  • Activado – indica que un servicio está configurado para iniciar cuando el sistema arranca.
  • Desactivado – indica que un servicio está configurado para no iniciar cuando el sistema arranca.
  • Activo – indica que un servicio está actualmente en estado de ejecución.
  • Inactivo – indica que un servicio no está actualmente en ejecución, pero puede iniciar cuando alguna aplicación intente iniciar ese servicio.

Lista de todos los servicios

Ahora que conoces los diferentes estados de los servicios, quizás quieras ver una lista de todos los servicios en tu PC con Ubuntu. Listar todos los servicios proporciona información útil para gestionar los servicios.

Abre tu terminal y ejecuta el siguiente comando para listar todas las unidades de servicio (list-units) (activas, en ejecución, salidas o fallidas) con el servicio establecido como tipo de unidad (--type=service).

systemctl list-units --type=service

Elige uno de los servicios de la lista que quieras gestionar más adelante en este tutorial y toma nota del nombre de UNIDAD (por ejemplo, apache2). Pulsa la barra espaciadora para desplazarte hacia abajo o pulsa la tecla “Q” para salir del comando.

Por cierto, aquí tienes una buena guía sobre Scripting en Shell de Linux.

Listing All Services (active, running, exited, or failed)

Enumeración de Servicios con Estado Específico

En lugar de enumerar todos los servicios, quizás desees reducir la lista de servicios. Si es así, agregar el parámetro --state hará el truco, ya que filtra los servicios con el estado específico que especifiques.

Ejecuta cualquiera de los comandos a continuación para enumerar todos los servicios activos (--type=service --state=active), tanto en ejecución como finalizados.

systemctl list-units --type=service --state=active
Listing Services on “active” State

De manera similar, para listar solo servicios finalizados o en ejecución, cambia el valor del estado de activo a en ejecución o finalizado, como se muestra en los comandos a continuación:

systemctl --type=service --state=running
systemctl --type=service --state=exited
Listing Services on “running” State
Listing Services on “stopped” State

Enumeración de Servicios Habilitados

Además de enumerar servicios activos, en ejecución y finalizados, también puedes listar servicios habilitados y deshabilitados mediante el uso del comando grep.

Ejecuta cualquiera de los comandos a continuación para listar (list-unit-files) servicios deshabilitados o habilitados (--type=service).

## Lista todos los servicios habilitados
systemctl list-unit-files --type=service | grep enabled
## Lista todos los servicios deshabilitados
systemctl list-unit-files --type=service | grep disabled

Toma nota de un servicio habilitado, como se muestra a continuación, ya que lo necesitarás más tarde para desactivar un servicio, pero este tutorial utiliza el servicio acpid.service como demostración. El acpid es un daemon extensible que admite los eventos del Advanced Configuration and Power Interface (ACPI).

Listing Enabled Services

Listando las Propiedades del Servicio

Además de listar servicios, es posible que desees verificar las propiedades de un servicio. Tener información sobre las propiedades del servicio es útil para solucionar problemas, entender los parámetros del proceso o el comportamiento de reinicio.

Ejecuta el siguiente comando para mostrar las propiedades de un servicio (acpid.service) en un formato clave=valor.

systemctl show acpid.service
Showing Service Properties

Ahora, si solo estás buscando una propiedad específica del servicio, puedes pasar la bandera -p con el nombre de la propiedad.

Ejecuta el siguiente comando para mostrar la propiedad MainPID de un servicio (acpid.service).

systemctl show acpid.service -p MainPID
Showing Specific Service Property

Gestionando un Servicio Específico

Ya que hemos cubierto lo básico de listar servicios, es hora de gestionar un servicio específico (único) ejecutando los comandos systemctl stop y start.

El servicio Apache (apache2) se utiliza para las siguientes demos, pero puedes administrar libremente el servicio que anotaste en la sección “Listando Todos los Servicios”. Pero antes de detener o iniciar un servicio, primero necesitas verificar el estado del servicio.

Ejecuta el siguiente comando en una terminal para ver la información detallada del servicio apache2 como su estado.

systemctl status apache2

A continuación, puedes ver que el servicio apache2 está activo y en funcionamiento.

Viewing apache2 Service Status

Ingresar la contraseña de sudo no es necesario para ver el estado del servicio ya que no estás cambiando el estado del servicio. Pero si inicias, detienes o reinicias un servicio, tienes que anteponer el comando sudo e ingresar la contraseña de sudo.

Deteniendo un Servicio

Quizás quieras detener un servicio que quedó colgado y sigue ejecutándose en segundo plano. En ese caso, el comando systemctl stop es lo que necesitas. Ejecuta el comando systemctl a continuación para detener el servicio apache2.

sudo systemctl stop apache2

Si prefieres detener varios servicios simultáneamente, especifica cada servicio separado por un espacio, así: sudo systemctl stop sshd apache2. En este comando, detendrás tanto los servicios sshd como apache2 de una vez.

Ahora ejecuta el comando systemctl status como lo hiciste anteriormente para verificar si el servicio apache2 se detuvo.

systemctl status apache2

Puedes ver a continuación que el estado del servicio apache2 cambió a inactivo (muerto), lo que indica que el servicio se detuvo.

Verifying if apache2 Service is Stopped

Iniciando un Servicio

Ahora, ¿cómo iniciar un servicio si notas que no se está ejecutando en absoluto? Ejecutas un comando similar al de detener el servicio, que es el comando systemctl start. Ejecuta el siguiente comando para iniciar el servicio apache2.

sudo systemctl start apache2

Al igual que detener varios servicios, también puedes iniciar varios servicios en una sola línea de comando. Reemplaza el comando stop con el comando start de esta manera: sudo systemctl start sshd apache2

Ahora ejecuta el comando systemctl status una vez más para verificar si el servicio apache2 está en ejecución.

systemctl status apache2

Si ves el estado activo (en ejecución), como se muestra a continuación, entonces todo está listo ya que el servicio está nuevamente en funcionamiento.

Starting apache2 service

Si prefieres reiniciar el servicio de inmediato sin tener que detenerlo primero. Si es así, utiliza el comando systemctl restart en su lugar, como este: sudo systemctl restart apache2

Habilitar o deshabilitar un servicio

Quizás haya un servicio en particular que prefieras iniciar o evitar que se inicie en el arranque del sistema. Si es así, ejecutar el comando systemctl enable o disable es el mejor enfoque.

El subcomando enable te permite configurar la configuración de inicio predeterminada en tu sistema, mientras que el subcomando disable evita que un servicio se ejecute en el arranque del sistema.

Ejecute el comando systemctl a continuación para deshabilitar el servicio (acpid.service) que ha notado en la sección “Listado de Servicios Habilitados”. Ingrese su contraseña de sudo para autorizar la ejecución del comando.

sudo systemctl disable acpid.service
Disabling a Service

Ahora, dado que el servicio acpid.service admite la configuración dirigida por el SO y Administración de Energía (OSPM), necesita volver a habilitarlo. El comando para habilitar el servicio es similar a deshabilitar un servicio.

Ejecute el comando systemctl a continuación para habilitar acpid.service. Este comando registra el servicio de vuelta a la configuración de inicio predeterminada en su sistema.

sudo systemctl enable acpid.service
Enabling a Service

Conclusión

En este tutorial, has descubierto lo rápido que puedes detener, iniciar o reiniciar servicios ejecutando comandos systemctl en Ubuntu. También has aprendido que el comando systemctl te permite administrar no solo uno, sino varios servicios simultáneamente.

Con este nuevo conocimiento, ¿por qué no automatizar el control de servicios en tu sistema Ubuntu?

Source:
https://adamtheautomator.com/ubuntu-systemctl/