Para ver todos los servicios en ejecución en un sistema Linux con systemd, use el comando «systemctl –type=service –state=running». Esto le mostrará el nombre, la carga, el subestado y la descripción de cada servicio activo. También puede cambiar el valor del estado para ver los servicios que están inactivos, cerrados, fallidos o inactivos.
Su computadora con Linux depende de muchas tareas en segundo plano llamadas servicios o demonios. En las distribuciones basadas en systemd, tiene comandos integrados que le permiten ver qué servicios se están ejecutando, están deshabilitados o fallan.
Servicios y Demonios
Los servicios y demonios son tareas en segundo plano que se ejecutan sin una interfaz de usuario, no requieren interacción humana y, por lo general, se inician cuando se inicia la computadora.
En un momento, los servicios fueron lanzados por init
, que fue el primer proceso que se puso en marcha. Los detalles de los servicios se guardaron en una colección de scripts ubicados en el directorio «/etc/init/d». En distribuciones que no son systemd, ese sigue siendo el caso.
En el mundo systemd, los servicios son lanzados por systemd
que es ahora el primer proceso que se lanzará. Los detalles de los servicios se almacenan en archivos de unidad ubicado en el directorio “/usr/lib/systemd”.
De acuerdo con su página man, systemd
es un administrador de sistemas y servicios. Puedes usar el systemctl
comando para inspeccionar y controlar diferentes aspectos del sistema systemd, incluidos servicios y demonios.
Debido a que estamos viendo comandos específicos de systemd aquí, lo primero que debe saber es si está ejecutando una distribución basada en systemd o no.
RELACIONADO: Por qué systemd de Linux sigue siendo divisivo después de todos estos años
¿Basado en init o systemd?
La gran mayoría de las distribuciones de Linux usan systemd, incluidas Arch, Red Hat y Debian, y muchas de las distribuciones derivadas de ellas. Eso incluye la familia de distribuciones Ubuntu, Fedora y sus giros, y Manjaro y las otras distribuciones basadas en Arch.
Sin embargo, existen bifurcaciones o sabores de algunas de estas distribuciones que se han creado específicamente para evitar tener que usar systemd. No solo eso, sino que hay otros sistemas de inicio que alguien podría elegir usar en lugar del que viene por defecto en su distribución, como runit o s6-linux-init.
Si tiene que administrar una computadora con Linux que no configuró usted mismo, la única forma de estar seguro de si está usando systemd o no es verificar. Podemos hacerlo observando el árbol de procesos con el pstree
dominio. Solo necesitamos ver la parte superior del árbol, después de todo, estamos buscando el primer proceso que se ejecuta, por lo que canalizaremos la salida a través del head
y pregunte por las primeras cinco entradas.
pstree | head -5
Podemos ver eso systemd
es el primer proceso que se ejecuta después del arranque, por lo que definitivamente estamos en una instalación de Linux basada en systemd.
RELACIONADO: Cómo administrar procesos desde la terminal de Linux: 10 comandos que necesita saber
Uso de systemctl para enumerar servicios
El comando para listar servicios y demonios es systemctl
. Podemos refinar la systemctl
comando con el type
y state
opciones estamos preguntando systemctl
para informar sobre los servicios que se encuentran en estado de ejecución.
systemctl --type=service --state=running
Se genera una tabla de información. Si es demasiado ancho o largo para la ventana de su terminal, se muestra en su visor de archivos predeterminado, que probablemente será less
.
Para ver el extremo derecho de la tabla, presione la tecla de flecha derecha. Para volver a la vista habitual, presione la tecla de flecha izquierda.
Presione la tecla Q para salir de menos. Las columnas que se muestran son:
- Unidad: El nombre del servicio o daemon. La columna se titula «Unidad» porque lo que sea que esté en esta columna se lanzó usando información
systemd
encontrado en un archivo de unidad. - Carga: El estado de carga del servicio o daemon. Puede estar cargado, no encontrado, mal configurado, error o enmascarado.
- Activo: El estado general en el que se encuentra el servicio o demonio. Puede estar activo, recargándose, inactivo, fallido, activándose o desactivándose.
- SUB: El subestado del servicio o daemon. Puede estar muerto, cerrado, fallido, inactivo o en ejecución.
- Descripción: Una breve descripción de la unidad.
Podemos canalizar la salida de systemctl
mediante grep
si queremos centrarnos en un solo servicio. Este comando aísla la entrada de la tabla para el ssh
Servicio.
systemctl --type=service --state=running | grep ssh
Hasta ahora, hemos estado filtrando el contenido de la tabla proporcionando el state=running
opción. En su lugar, podemos usar cualquiera de los valores posibles del subestado: muerto, salido, fallido, inactivo o en ejecución.
Busquemos servicios fallidos:
systemctl --type=service --state=failed
Se pueden utilizar combinaciones de subestados. Escríbalos como una lista separada por comas. Asegúrese de no incluir ningún espacio en blanco entre las opciones. Tenga en cuenta que esto encuentra servicios que coinciden o estado.
systemctl --type=service --state=failed,exited
Al presionar la tecla de flecha derecha para ver las columnas fuera de la pantalla, se muestra que tenemos una combinación de servicios que han salido y fallado en la lista.
Por defecto, systemctl
enumera los procesos (servicios y demonios) que han sido lanzados por systemd
porque systemd
encontró un archivo de unidad que contenía un archivo de unidad válido para ellos. Es por eso que el término abreviado para todos estos procesos es «unidades».
Hay una opción para solicitar explícitamente systemctl
para enumerar unidades, pero como es la acción predeterminada, no se usa con frecuencia.
Estos comandos producen los mismos resultados.
sudo systemctl list-units --type=service --state=running
sudo systemctl --type=service --state=running
Usando systemctl para listar archivos de unidad
Podemos ampliar el alcance de la systemctl
comando incluyendo el list-unit-files
opción. Esto no solo informa sobre los servicios y demonios que se han lanzado, sino que también enumera todos los archivos de unidad instalado en su computadora.
systemctl list-unit-files --state=enabled
Se muestra una tabla de colores.
La eliminación de la state
La opción elimina el filtrado. La salida contendrá todos los archivos de unidad instalados, independientemente de su estado.
systemctl list-unit-files
La salida contendrá muchas más entradas que los resultados de los comandos anteriores.
En nuestra computadora de prueba, la lista de resultados es casi cuatro veces más larga que la salida de nuestros comandos anteriores.
Si desea utilizar el state
opción, puede usar múltiples estados con él como vimos anteriormente. Se aplican las mismas reglas. Proporcione las opciones como valores separados por comas y no incluya ningún espacio en blanco.
Este comando mostrará una lista de todos los archivos de la unidad que están deshabilitados o no se pudieron iniciar.
systemctl list-unit-files --state=enabled,failed
Se muestra un número reducido de resultados, filtrados según las selecciones realizadas con la opción de estado.
Mirando un servicio en detalle
Si algo sobre un servicio o demonio despierta su interés y merece una inmersión más profunda, puede verlo en detalle usando la opción de estado systemctl.
Echemos un vistazo al demonio SSH, sshd. Todo lo que tenemos que hacer es usar la opción de estado y el nombre del servicio o daemon.
systemctl status sshd
Esta pantalla compacta muestra:
- El nombre del servicio junto con una breve descripción. Un punto codificado por colores muestra si se está ejecutando o no. Verde significa que se está ejecutando, rojo significa que no.
- Lo que se cargó, incluida la ruta al archivo de la unidad.
- Cuánto tiempo ha estado funcionando.
- Donde la documentación se encuentra en el
man
manual. - El ID de proceso de la instancia en ejecución.
- Cuántas instancias simultáneas de este servicio se están ejecutando. Por lo general, este será uno.
- Cuánta memoria se está consumiendo.
- Cuánto tiempo de CPU se ha consumido.
- El grupo de control al que pertenece el servicio.
También se muestran las entradas relevantes del registro del sistema. Suelen ser eventos como el inicio del servicio. Estos pueden ser informativos si está investigando un servicio o demonio que no se inició correctamente.
RELACIONADO: Cómo usar journalctl para leer registros del sistema Linux
Los Sistemas Autonómicos
Los servicios y demonios proporcionan muchas de las acciones automáticas de su sistema operativo, por lo que son vitales. Eso significa que su salud también es vital.
Obtener una vista de sus servicios, demonios y archivos de unidad es fácil e informativo. También es un paso valioso para solucionar problemas si un servicio o demonio se niega a iniciarse.
RELACIONADO: Cómo resolver el error «Demasiados archivos abiertos» en Linux