En Linux, un servicio es un programa que se ejecuta en segundo plano . Los servicios se pueden iniciar a pedido o en el momento del arranque.
Si está utilizando Linux como su sistema operativo principal o plataforma de desarrollo, tratará con diferentes servicios como servidor web, ssh o cron . Saber cómo enumerar los servicios en ejecución o verificar el estado del servicio es importante al depurar problemas del sistema.
La mayoría de las distribuciones recientes de Linux utilizan systemd como administrador de servicios y sistema de inicio predeterminado.
Systemd es un conjunto de herramientas para administrar sistemas Linux. Se utiliza para arrancar la máquina, administrar servicios, montar automáticamente sistemas de archivos, registrar eventos, configurar el nombre de host y otras tareas del sistema.
Este artículo explica cómo enumerar servicios en Linux.
Listado de servicios Linux
Systemd utiliza el concepto de unidades, que pueden ser servicios, sockets, puntos de montaje, dispositivos, etc. Las unidades se definen utilizando archivos de texto en formato ini
. Estos archivos incluyen información sobre la unidad, su configuración y los comandos para ejecutar. Las extensiones de nombre de archivo definen el tipo de archivo de la unidad. Por ejemplo, los archivos de la unidad de servicio del sistema tienen una extensión .service
.
systemctl
es una utilidad de línea de comandos que se utiliza para controlar systemd y administrar servicios. Es parte del ecosistema systemd y está disponible de forma predeterminada en todos los sistemas.
Para obtener una lista de todas las unidades de servicio cargadas, escriba:
sudo systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
...
Cada línea de salida contiene las siguientes columnas de izquierda a derecha:
UNIT
– El nombre de la unidad de servicio.LOAD
– Información sobre si el archivo de la unidad se ha cargado en la memoria.ACTIVE
– El estado de activación del archivo de la unidad de alto nivel, que puede ser activo, recargando, inactivo, fallido, activando, desactivando. Es una generalización de la columnaSUB
.SUB
– El estado de activación del archivo de unidad de bajo nivel. El valor de este campo depende del tipo de unidad. Por ejemplo, una unidad de tipo de servicio puede estar en uno de los siguientes estados: inactiva, cerrada, fallida, inactiva o en ejecución.DESCRIPTION
– Breve descripción del archivo de la unidad.
De forma predeterminada, el comando enumera solo las unidades activas cargadas. Para ver las unidades cargadas pero inactivas también, pase la opción: --all
sudo systemctl list-units --type service --all
Si desea ver todos los archivos de unidad instalados, no solo los cargados, use:
sudo systemctl list-unit-files
Visualización del estado del servicio
Para verificar el estado de un servicio, use el comando: systemctl status
sudo systemctl status <service_name>.service
¿Dónde está el nombre de la unidad de servicio que desea verificar? Por ejemplo, para determinar el estado actual del servicio nginx, ejecutaría: <service_name>
sudo systemctl status nginx.service
Puede omitir el sufijo «.service». systemctl status nginx
es lo mismo que systemctl status nginx.service
.
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-12-23 19:13:50 UTC; 5s ago
Docs: man:nginx(8)
Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 3061064 (nginx)
Tasks: 2 (limit: 470)
Memory: 6.0M
CGroup: /system.slice/nginx.service
├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─3061065 nginx: worker process
Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server...
El comando imprimirá la siguiente información:
Loaded
– Si la unidad de servicio se ha cargado y la ruta completa al archivo de la unidad. También muestra si la unidad está habilitada para iniciarse en el momento del arranque.Active
– Si el servicio está activo y en ejecución. Si su terminal admite colores y el servicio está activo y en ejecución, el punto (●
) y la parte «activa (en ejecución)» se imprimirán en verde. La línea también muestra cuánto tiempo está funcionando el servicio.Docs
– La documentación del servicio.Process
– Información sobre los procesos del servicio.Main PID
– El servicio PID.Tasks
– El número de tareas contabilizadas por la unidad y el límite de tareas.Memory
– Información sobre la memoria utilizada.CGroup
– Información sobre Grupos de Control relacionados.
Si solo desea verificar el estado del servicio, use el comando systemctl is-active
. Por ejemplo, para verificar que el servicio nginx se esté ejecutando, ejecutaría:
systemctl is-active nginx.service
active
El comando le mostrará el estado del servicio. Si el servicio está activo, el comando devuelve un estado de salida de 0, que puede ser útil cuando se usa el comando dentro de los scripts de shell.
Le mostramos cómo usar el comando systemctl
para enumerar los servicios de Linux y verificar su estado.