Como administrador del sistema, probablemente esté tratando con muchos servicios todos los días.
En Linux, servicios se utilizan para muchos propósitos diferentes.
Pueden usarse para iniciar un servidor SSH en su máquina o pueden realizar algunas operaciones en una hora o día específico.
Ya sea que esté utilizando una distribución basada en Debian o RedHat, consultar los servicios es muy similar.
Sin embargo, dada la distribución que está usando, y más específicamente el sistema de inicialización (init o systemd), puede que tenga que usar diferentes comandos.
En este tutorial, aprenderá cómo puede, dado su administrador de sistema, listar todos los servicios en su máquina Linux.
Determinar el administrador del sistema utilizado
Como probablemente sepa, las distribuciones recientes usan el administrador del sistema Systemd .
Sin embargo, no siempre ha sido así:en el pasado, la mayoría de las distribuciones usaban el administrador del sistema SysVinit.
Como consecuencia, existen realmente dos formas de administrar sus servicios en un sistema Linux.
Antes de aprender los comandos para enumerar los servicios, debe conocer el administrador del sistema que está utilizando actualmente.
Para determinar su administrador de sistema actual, la forma más fácil es usar el comando "pstree" y verificar el primer proceso que se ejecutó en su sistema.
$ pstree | head -n 5
Si ve "systemd “, obviamente significa que actualmente está utilizando systemd. Sin embargo, si ve "init “, significa que está utilizando SysVinit.
En Ubuntu 14.04, que todavía usa el antiguo sistema de inicio, su "pstree" puede verse así.
Servicios de lista usando systemctl
La forma más fácil de listar servicios en Linux, cuando está en un sistema systemd, es usar el comando "systemctl" seguido de "list-units". Puede especificar la opción “–type=service” para restringir los resultados solo a los servicios.
$ systemctl list-units --type=service
De forma predeterminada, este comando le mostrará solo los servicios que están activos o los servicios que han fallado en su sistema. En la captura de pantalla anterior, la mayoría de los servicios están activos, pero el de logrotate (resaltado en rojo) está marcado como fallido.
Impresionante, aprendió cómo puede listar sus servicios en un servidor Linux fácilmente.
Sin embargo, como habrás notado, no tenías acceso a todos los servicios:¿Qué pasa con los servicios inactivos? ¿Qué pasa con los servicios que systemd no cargó en el arranque?
Lista de todos los servicios en Linux usando unidades de lista
Para enumerar todos los servicios, es decir, activos e inactivos, debe usar el comando "systemctl list-units" seguido de la opción "–all".
Del mismo modo, puede limitar los resultados a los servicios únicamente utilizando el filtro de tipo.
$ systemctl list-units --type=service --all
Como puede ver, los servicios inactivos también aparecen en la lista, lo que podría ser conveniente si solo escribiera su servicio y lo cuidara en la lista.
En este caso, solo se enumeran los servicios cargados. En el arranque, systemd carga los archivos de la unidad y puede optar por no cargar un servicio específico si descubre que el sistema no lo usará.
Como consecuencia, existe una diferencia real entre "cargado ” y “instalado ” servicios. Los servicios "Instalados" significan que los archivos de la unidad se pueden encontrar en las rutas correspondientes.
Servicios de lista por estado
En algunos casos, es posible que solo le interesen los servicios que han fallado. Para eso, puede especificar el estado que está buscando como una opción del comando systemctl.
$ systemctl list-units --state=<state>
$ systemctl list-units --state=<state1>,<state2>
Donde "estado" puede ser uno de los siguientes valores:activo, inactivo, activando, desactivando, fallido, no encontrado o inactivo.
Por ejemplo, si solo nos interesan los servicios “fallidos”, vamos a ejecutar el siguiente comando
$ systemctl list-units --state=failed
Lista de todos los archivos de servicio usando list-unit-files
Finalmente, si está interesado en "cargado “, “instalado “, “deshabilitado ” así como “habilitado ” archivos de servicio, hay otro comando que puede ser muy útil.
Para enumerar todos los archivos de servicio disponibles, debe usar el comando "systemctl" seguido de "list-unit-files". Opcionalmente, puede especificar el tipo usando la opción “–type=service”.
$ systemctl list-unit-files --type=service
Alternativamente, puede usar el comando "grep" para buscar rutas específicas en su sistema que puedan contener archivos de servicio.
$ ls -l /etc/systemd/system /usr/lib/systemd/service | egrep .service$
¡Felicitaciones, aprendió cómo puede enumerar servicios si su sistema usa systemd!
Servicios de lista usando servicio
La forma más fácil de listar servicios en Linux, cuando está en un sistema de inicio SystemV, es usar el comando "servicio" seguido de la opción "–status-all". De esta manera, se le presentará una lista completa de servicios en su sistema.
$ service --status-all
Como puede ver, cada servicio se enumera precedido por símbolos entre paréntesis. Esos símbolos significan:
- + :significa que el servicio está ejecutándose;
- – :significa que el servicio no se está ejecutando en absoluto;
- ? :significa que Ubuntu no fue capaz de decir si el servicio se está ejecutando o no.
Entonces, ¿por qué algunos servicios indican si se están ejecutando o no y otros no?
Todo se reduce a la implementación del script de inicio. En algunos scripts, como el script udev, por ejemplo, puede ver que el "estado El comando ” está implementado.
Este no es el caso para el “dns-clean ” script, por ejemplo, que es la razón por la que tiene un signo de interrogación cuando consulta este servicio.
Enumerar los servicios de SysVinit en carpetas
Otra forma de enumerar la lista actual de servicios es usar el comando "ls" en las carpetas que contienen todos los scripts en un sistema Linux, a saber, "/etc/init.d".
$ ls -l /etc/init.d/*
Conclusión
En este tutorial, aprendió cómo puede listar fácilmente servicios en un sistema Linux ya sea que esté usando systemd o SysVinit.
Si está interesado en crear sus propios servicios, le recomendamos que eche un vistazo a los siguientes recursos. Pueden ser realmente útiles para lograrlo correctamente.
- Escribir un script de inicio para los sistemas de inicio;
- Iniciando servicios en el arranque usando systemd;
Si está interesado en Administración del sistema Linux , tenemos una sección completa sobre este tema en el sitio web, así que asegúrese de consultarla.