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
).
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.

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.

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:


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
).
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).

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.

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
).

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
.
A continuación, puedes ver que el servicio apache2 está activo y en funcionamiento.

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
.
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.
Puedes ver a continuación que el estado del servicio apache2 cambió a inactivo (muerto), lo que indica que el servicio se detuvo.

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
.
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 comandostart
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.
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.

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.

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.

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?