Un sistema Linux proporciona una variedad de servicios del sistema (como gestión de procesos, inicio de sesión, syslog, cron, etc.) y servicios de red (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 El servicio es un proceso o grupo de procesos (comúnmente conocido como demonios) que se ejecuta continuamente en segundo plano, esperando que lleguen las 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.), 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.
Lea también: La historia detrás de init y systemd: Por qué init necesitaba ser reemplazado por systemd en Linux
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.
Enumerar los 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 not).
# 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 --type
cambiar con un valor de servicio.
# systemctl list-units --type=serviceOR# systemctl --type=service
Y para enumerar todos los servicios cargados pero activos, tanto en ejecución como los que han salido, puede agregar la opción --state
con un valor de activo, de la siguiente manera.
# systemctl list-units --type=service --state=activeOR# 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 utiliza 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 y 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 usan. Para determinar el puerto en el que está escuchando un proceso daemon, puede usar las herramientas netstat o ss como se muestra.
Donde el indicador -l
significa imprime 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_agentdOR# ss -ltup | grep zabbix_agentd
El La quinta columna muestra el socket: 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 firewall-cmd o ufw (según las distribuciones de Linux que esté usando) como se muestra.
# firewall-cmd --list-services # firewall-cmd --list-ports$ sudo ufw status