Cómo enumerar los servicios de Linux con systemctl


fatmawati achmad zaenuri/Shutterstock.com

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

Usar pstree canalizado a través de head para determinar si una instalación de Linux está usando systemd

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

Usando systemctl para enumerar los servicios en ejecución

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.

El resultado de una llamada systemctl que se muestra en el visor de archivos menos

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.

La sección de la derecha de la salida de una llamada systemctl que se muestra en el visor de archivos menos

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

Uso de grep para aislar un solo servicio de los resultados

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

Informes sobre servicios fallidos con systemctl

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

Buscando servicios que fallaron o salieron con systemctl

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.

Una mezcla de servicios fallidos y cerrados encontrados por systemctl

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

Listado de archivos de unidad con systemctl

Se muestra una tabla de colores.

Una lista de archivos unitarios generados por systemctl, que se muestra en el explorador de archivos menos

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

Uso de systemctl para listar archivos de unidades sin filtrado

La salida contendrá muchas más entradas que los resultados de los comandos anteriores.

Todos los archivos de unidad enumerados por systemctl y mostrados en el explorador de archivos menos

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

Uso de systemctl para buscar archivos de unidad que coincidan con cualquiera de los dos estados

Se muestra un número reducido de resultados, filtrados según las selecciones realizadas con la opción de estado.

Una mezcla de archivos de unidad deshabilitados y fallidos encontrados por systemctl

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

Los detalles de un solo servicio mostrado por systemctl

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





Source link-39