Cómo enumerar todos los servicios en ejecución en Systemd en Linux


Los sistemas Linux proporcionan una variedad de servicios del sistema (como inicio de sesión remoto, correo electrónico, impresoras, alojamiento web, almacenamiento de datos, transferencia de archivos, resolución de nombres de dominio (usando DNS), asignación dinámica de direcciones IP (usando DHCP) y mucho más ).

Técnicamente, un servicio es un proceso o grupo de procesos (comúnmente conocidos como demonios) que se ejecutan continuamente en segundo plano, esperando que lleguen solicitudes (especialmente de los clientes).

Linux admite diferentes formas de administrar (iniciar, detener, reiniciar, habilitar el inicio automático en el inicio del sistema, etc.) los servicios, generalmente a través de un administrador de procesos o servicios. La mayoría, si no todas, las distribuciones modernas de Linux ahora usan el mismo administrador de procesos: systemd.

Systemd es un administrador de sistemas y servicios para Linux; un reemplazo directo para el proceso de inicio, que es compatible con los scripts de inicio de SysV y LSB y el comando systemctl es la herramienta principal para administrar systemd.

En esta guía, demostraremos cómo enumerar todos los servicios en ejecución en systemd en Linux.

Listado de servicios en ejecución en SystemD en Linux

Cuando ejecuta el comando systemctl sin ningún argumento, mostrará una lista de todas las unidades systemd cargadas (lea la documentación de systemd para obtener más información sobre las unidades systemd), incluidos los servicios, mostrando su estado (ya sea activo o no).

# systemctl 

Para enumerar todos los servicios cargados en su sistema (ya sean activos, en ejecución, salidos o fallidos, use el subcomando list-units y el modificador --type con un valor de service.

# systemctl list-units --type=service
OR
# systemctl --type=service

Y para listar todos los servicios cargados pero activos, tanto en ejecución como aquellos que han salido, puede agregar la opción --state con un valor de active, como sigue.

# systemctl list-units --type=service --state=active
OR
# systemctl --type=service --state=active

Pero para obtener un vistazo rápido de todos los servicios en ejecución (es decir, todos los servicios cargados y en ejecución activa), ejecute el siguiente comando.

# systemctl list-units --type=service --state=running 
OR
# systemctl --type=service --state=running

Si usa con frecuencia el comando anterior, puede crear un comando de alias en su archivo ~/.bashrc como se muestra, para invocarlo fácilmente.

# vim ~/.bashrc

Luego agregue la siguiente línea debajo de la lista de alias como se muestra en la captura de pantalla.

alias running_services='systemctl list-units  --type=service  --state=running'

Guarde los cambios en el archivo y ciérrelo. Y de ahora en adelante, use el comando "running_services" para ver una lista de todos los servicios cargados que se ejecutan activamente en su servidor.

# running_services	#use the Tab completion 

Además, un aspecto importante de los servicios es el puerto que utilizan. Para determinar el puerto en el que escucha un proceso de demonio, puede usar las herramientas netstat o ss como se muestra.

Donde el indicador -l significa imprimir todos los sockets de escucha, -t muestra todas las conexiones TCP, -u muestra todas las conexiones UDP, - n significa imprimir números de puerto numéricos (en lugar de nombres de aplicaciones) y -p significa mostrar el nombre de la aplicación.

# netstat -ltup | grep zabbix_agentd
OR
# ss -ltup | grep zabbix_agentd

La quinta columna muestra el conector: Dirección local: Puerto. En este caso, el proceso zabbix_agentd está escuchando en el puerto 10050.

Además, si su servidor tiene un servicio de firewall en ejecución, que controla cómo bloquear o permitir el tráfico hacia o desde servicios o puertos seleccionados, puede enumerar los servicios o puertos que se han abierto en el firewall, utilizando el comando ufw (según el sistema Linux distribuciones que está utilizando) como se muestra.

# firewall-cmd --list-services   [FirewallD]
# firewall-cmd --list-ports

$ sudo ufw status     [UFW Firewall]

¡Eso es todo por ahora! En esta guía, demostramos cómo ver los servicios en ejecución en systemd en Linux. También cubrimos cómo verificar el puerto en el que está escuchando un servicio y cómo ver los servicios o puertos abiertos en el firewall del sistema. ¿Tiene alguna adición que hacer o preguntas? Si es así, comuníquese con nosotros utilizando el formulario de comentarios a continuación.