1-1

En este blog hablamos poco sobre administración de sistemas porque su meta y fin, sobre todo, es el inicio del usuario en GNU/Linux y la defensa y uso del software libre. Pero eso no significa que no se hable de otras áreas, y a veces tocamos temas que interesen a un administrador de sistemas. Hoy vamos a aprender a listar los servicios de nuestro sistema operativo usando Systemd y Sysvinit.

Servicios hay muchos. Unos se encargan de iniciar/detener el stack bluetooth, por ejemplo, o el descubrimiento de impresoras con CUPS, el servicio de redes y decenas de demonios que debemos de controlar si estamos administrando un sistema. Systemd es el gestor de inicio/servicios más usado, dado que la aplastante mayoría de distribuciones lo trae implementado de serie. Sysvinit, como una alternativa a Systemd, cada día tiene más seguidores. Veamos cómo listar servicios en los dos distintos sistemas de inicio.

Ante todo, si estás empezando o aprendiendo a administrar un sistema, debemos de comprobar que tipo de inicio tenemos en nuestra distribución GNU/Linux. Eso lo sabremos con la siguiente orden:

pstree | head -n 5

ps

Como podemos observar, estoy usando Systemd. En el caso de usar otro inicio, arriba a la izquierda aparecería Sysvinit, OpenRC, etc.

Systemd

La orden para listar todos los servicios con Systemd sería:

systemctl list-units --type=service

all

Con la tecla flecha puedes navegar por el listado de los servicios. La información te indica si el servicio está cargado, activo y una descripción. Para salir, presiona la tecla q.

Para listar todos los servicios, es decir, activos e inactivos, hay que utilizar la orden systemctl list-units seguido de la opción –all.

Del mismo modo, se pueden limitar los resultados a los servicios sólo mediante el filtro de tipos.

systemctl list-units --type=service --all

todosservicios

Como puedes ver, los servicios inactivos también están listados.

En el arranque, Systemd carga los archivos de unidad y puede elegir no cargar un servicio específico si encuentra que no será utilizado por el sistema.

Como consecuencia, existe una diferencia real entre los servicios “cargados” y los “instalados”. Los servicios “instalados” significan que los archivos de unidad se pueden encontrar en las rutas correspondientes.

En algunos casos, puede que sólo te interesen los servicios que han fallado. Para ello, puedes especificar el estado que buscas como una opción de la orden systemctl.

systemctl list-units --state=failed

Las opciones pueden ser: active, inactive, activating, deactivating, failed, not-found o dead.

En mi caso no hay unidades con fallo. Abajo, la salida con la opción active y la salida con failed.

activos

fail

Sysvinit

Sysvinit no tiene la cantidad de opciones de Systemd pero también es posible obtener datos que nos interesa.

service --status-all

Lamentablemente no estoy usando una distribución con SysV por lo que no puedo adjuntar imágenes ilustrativas, pero debes saber que junto con la salida aparecerán los siguientes símbolos:

+ : Significa que el servicio está funcionando.
Significa que el servicio no está funcionando en absoluto.
? : Significa que tu sistema no fue capaz de decir si el servicio está funcionando o no.

Entonces, ¿por qué algunos servicios pueden decir si se están ejecutando o no, y otros no pueden? Todo se reduce a la implementación del script de inicio. En algunos scripts, como el script udev por ejemplo, se puede ver que con la orden “status” está implementado.

Otra forma de enumerar la lista actual de servicios es utilizar la orden “ls” en los directorios que contienen todos los scripts de un sistema GNU/Linux, a saber, “/etc/init.d”.

ls -l /etc/init.d/*

OpenRC

Manejar los servicios con el inicio OpenRC difiere en la parte técnica así como en las órdenes de bash con Systemd y SysV. En general, para listar todos los servicios, se ejecuta:

rc-status --list

El resultado sería:
boot
default
nonetwork
shutdown
sysinit

Donde:

boot – Por lo general, los únicos servicios que se deben añadir al nivel de ejecución de arranque son los que se ocupan del montaje de los sistemas de archivos, el establecimiento del estado inicial de los periféricos adjuntos y el registro. Los servicios de conexión en caliente son añadidos al nivel de ejecución de arranque por el sistema. Todos los servicios en los niveles de ejecución de arranque y sysinit se incluyen automáticamente en todos los demás niveles de ejecución, excepto los que se enumeran aquí.
single – Detiene todos los servicios excepto los del nivel de ejecución sysinit.
reboot – Cambia al nivel de ejecución de apagado y luego reinicia el host.
shutdown – Cambia al nivel de ejecución de apagado y luego detiene el host.
default: Se utiliza si no se especifica ningún nivel de ejecución. Por lo general, éste es el nivel de ejecución al que desea agregar servicios.

Para ver los servicios iniciados manualmente, ejecuta:

rc-status --manual

Para ver los servicios que se han colgado:

rc-status --crashed

Lstar todos los servicios disponibles:

rc-service --list

Si lo que quieres es habilitar un servicio en el inicio, ejecuta:

rc-update add {nombre del servicio} {nombre del nivel}

Donde el nombre del nivel podría ser default.

Runit

Runit es otro sistema de inicio, usado por la distribución Void Linux entre otras pocas más y también tiene sus propias características y órdenes distintas a las de otros gestores de inicio.

Con runit (mejor en minúsculas), si queremos ver todos los servicios en ejecución, lanzamos en la terminal:

sv status /var/service/*

Aquí nos aparecerán de forma distinta, a la salidad de Systemd, OpenRC y SysV. Su sintaxis será así:

run: /var/service/agetty-2: (pid 4120) 7998s
run: /var/service/agetty-3: (pid 4119) 7998s
run: /var/service/bougyman: (pid 4465) 7972s
run: /var/service/bougyx: (pid 4135) 7998s; run: log: (pid 4127) 7998s
run: /var/service/cron: (pid 4137) 7998s; run: log: (pid 4122) 7998s
run: /var/service/dialer: (pid 4121) 7998s

Como se puede apreciar, la salida indica la ruta dónde está alojado el servicio, el nombre del servicio y el PID de la ejecución.

Para crear un servicio, debes enlazarlo desde /etc/sv/ a /var/service/. Por ejemplo el servicio ssh:

ln -s /etc/sv/ssh /var/service/ssh

Para detener, reiniciar e iniciar el servicio:

sv down /var/service/ssh
sv restart /var/service/ssh
sv up /var/service/ssh

Con esto, aunque no es una profundización de los servicios, porque en realidad existen muchas más opciones en todos los inicios, al menos sabrás lo más básico.

 

Fuente: maslinux

¿Quién está en línea?

Hay 49204 invitados y ningún miembro en línea