Principales razones por las que systemd es una herramienta práctica para administradores de sistemas

System daemon o systemd es un administrador de sistemas y servicios para Linux. systemd es compatible con LSB y SysV y está disponible en las principales distribuciones. Ciertamente, como era de esperar con Linux, systemd no es el único sistema de inicio disponible. Otras alternativas incluyen OpenRC, SysVinit, runit y s6. Sin embargo, la versatilidad, la facilidad de uso y la potencia de la herramienta systemd la hacen práctica tanto para los usuarios como para los administradores del sistema.

Para administrar systemd, use el comando systemctl, que utiliza tanto la funcionalidad del servicio de SysVinit como los comandos chkconfig. Gestiona las unidades del sistema que son representaciones de los servicios y recursos del sistema. Puede usarlo para habilitar o deshabilitar servicios de forma permanente o para la sesión actual.

Índice

Por qué systemd es una herramienta práctica para administradores de sistemas

Este artículo destacará las razones por las que los administradores de sistemas consideran que systemd es una herramienta práctica para administrar servicios y recursos en un sistema Linux. Systemd proporciona lo siguiente:

  • Paralelización agresiva.
  • Inicio de servicios usando socket y activación D-Bus.
  • Realiza un seguimiento de los procesos mediante cgroups de Linux.
  • Admite el inicio bajo demanda de demonios.
  • Implementa una lógica de control de servicios transaccional basada en dependencia.
  • Admite instantáneas y restauración del estado del sistema.
  • Mantiene los puntos de montaje y montaje automático del sistema de archivos.
systemd
systemd

Gestión de arranque

Un proceso de arranque completo de Linux implica un arranque de hardware que inicializa el hardware del sistema, un arranque de Linux que carga el Kernel, luego systemd y el arranque de Linux, donde init o systemd prepara los procesos del sistema operativo. El proceso de inicio de Linux comienza cuando el Kernel transfiere el control del host al systemd. Entonces, Systemd inicia tantos servicios como sea posible en paralelo. Por lo tanto, acelera el inicio general y lleva al sistema operativo a una pantalla de inicio de sesión más rápido que otros procesos de inicio.

Algunos usuarios prefieren systemd porque administra casi todos los aspectos de su sistema. Por ejemplo, puede administrar servicios en ejecución, hardware, procesos y grupos de procesos, montajes del sistema de archivos, proporcionar información completa sobre el estado de los procesos y mucho más.

systemd genera datos del tiempo de actividad de su sistema desde un tiempo de arranque reciente. Los datos pueden servir como una verificación del estado de su sistema y, a menudo, son importantes al monitorear o diagnosticar problemas del sistema. Además, a menudo es importante que los administradores de sistemas comprendan y diferencien la función de cada proceso de inicio para administrar y solucionar mejor los procesos y el inicio del sistema.

registros de systemd

Los registros del sistema proporcionan un historial de la actividad de su computadora. Almacenan información sobre cuándo se iniciaron los servicios, trabajos del sistema, servicios que se ejecutan en segundo plano, actividades fallidas y mucho más. Para solucionar problemas de un sistema, puede revisar los registros con el comando journalctl.

$ journalctl --pager -end

El indicador –pager -end inicia la revisión del registro al final de la salida journalctl.

systemd mantiene un "catálogo" de errores, mensajes, posibles soluciones, sugerencias para foros de soporte y documentación para desarrolladores. Destaca el contexto importante, ya que podría haber muchos mensajes de registros que podrían pasar desapercibidos.

Ejecute el siguiente comando para integrar mensajes de error con texto explicativo:

$ journactl --pager -end --catalog

A menudo, es una buena práctica reducir y limitar la salida del registro al solucionar problemas de un sistema. Por ejemplo, puede especificar una sesión de inicio con la opción –boot y un índice de sesión.

$ journalctl --pager -end --catalog --boot 37

También puede ver los registros de una unidad systemd específica. Por ejemplo, para solucionar problemas del servicio SSH, puede especificar –unit sshd para ver los registros del demonio sshd.

$ journalctl --pager -end 
--catalog --boot 37
--unit sshd

servicios systemd

La tarea principal de systemd es iniciar su computadora y manejar la administración de servicios del sistema. Garantiza que un servicio se inicie, continúe ejecutándose durante una sesión, restaure un servicio fallado o incluso lo detenga cuando sea necesario. Puede administrar y controlar los servicios de systemd mediante el comando systemctl.

Los siguientes ejemplos demuestran cómo administrar los servicios de systemd:

Para ver archivos de unidad de un servicio (httpd):

# systemctl cat httpd

Para modificar archivos de unidad con cambios locales:

# systemctl edit httpd

Para activar un servicio (httpd):

# systemctl start httpd

Para desactivar un servicio (httpd):

# systemctl stop httpd

Para reiniciar un servicio (httpd):

# systemctl restart httpd

Para mostrar el estado del servicio (httpd):

# systemctl status httpd

Finalmente, para habilitar el servicio en el arranque del sistema (httpd):

# systemctl enable httpd

Para deshabilitar el servicio (httpd) para que no se inicie durante el arranque:

# systemctl disable httpd

Para verificar si el servicio (httpd) está habilitado o no:

# systemctl is-enabled httpd

Para evitar que un servicio se inicie a menos que esté desenmascarado:

# systemctl mask httpd

La ejecución de los comandos anteriores le da al administrador de sistemas información más útil sobre un servicio, ya sea que se esté ejecutando o no. Por ejemplo, con un solo comando systemctl status, obtiene información sobre el estado de ejecución o no ejecución de un servicio, las tareas en ejecución, la memoria y algunas de las entradas de registro más recientes. En esencia, simplifica la resolución de problemas porque obtendrá más información desde el principio.

Hecho de la diversión: Lennart Poettering es el desarrollador principal de systemd.

temporizadores systemd

systemd usa temporizadores para programar y ejecutar tareas o eventos repetidamente después de un inicio del sistema. Los temporizadores de Systemd pueden verse como una alternativa tanto a cron como a anacron. Como aprendimos en nuestro artículo anterior sobre la programación de tareas con cron, puede usarlo para programar eventos con una granularidad que va desde minutos hasta meses o incluso más. Sin embargo, un trabajo cron falla si su sistema no se está ejecutando cuando ocurre el tiempo de ejecución. Sin embargo, los administradores de sistemas pueden usar anacron para evitar que este trabajo falle. Pero para obtener lo mejor de cron y anacron, los administradores de sistemas a menudo usan temporizadores systemd que ofrecen mejores opciones de administración.

Los temporizadores systemd permiten la programación de tareas con una granularidad mínima, lo que garantiza que las tareas se ejecutarán cuando el sistema se vuelva a encender, incluso si estuvo apagado durante el tiempo de ejecución esperado. Además, los temporizadores están disponibles para todos los usuarios, y puede probarlos y depurarlos antes de implementarlos en su sistema. Sin embargo, una advertencia es que los temporizadores systemd requieren al menos dos archivos de configuración y pueden ser más complicados de configurar que cron y anacron.

Para configurar un temporizador systemd, necesitará la unidad del temporizador y los archivos de la unidad de servicio. El archivo de la unidad de temporizador define el horario, mientras que la unidad de servicio define las tareas.

Operaciones básicas del temporizador systemd

Una vez que haya creado un servicio, puede realizar las siguientes operaciones:

Primero, para habilitar un servicio de usuario (foo.service):

$ systemctl --user enable foo.service

En segundo lugar, para realizar una ejecución de prueba de la tarea:

$ systemctl --user start foo.service.

En tercer lugar, para habilitar e iniciar un temporizador de usuario para un servicio:

$ systemctl --user enable foo.timer
$ systemctl --user start foo.timer

Cuarto, para verificar y monitorear el estado de un servicio:

$ systemctl --user status foo
$ systemctl --user list-unit-files

Finalmente, para detener manualmente un servicio:

$ systemctl --user stop foo.service

Para detener y deshabilitar permanentemente el temporizador y el servicio:

$ systemctl --user stop foo.timer
$ systemctl --user disable foo.timer
$ systemctl --user stop foo.service
$ systemctl --user disable foo.service

Para recargar la configuración del demonio

$ systemctl --user daemon-reload
$ systemctl --user reset-failed

Para listar temporizadores activos:

$ systemctl list-timers

Para enumerar temporizadores cargados pero inactivos:

$ systemctl list-timers --all

objetivos systemd

Un objetivo systemd es un conjunto de unidades systemd que deben iniciarse para alcanzar el estado deseado. Los objetivos no son muy diferentes a los servicios y los temporizadores. Están definidos por un archivo de unidad y se pueden iniciar, habilitar y detener de la misma manera que los temporizadores. Sin embargo, los objetivos son únicos porque agrupan otros archivos de unidades de una manera arbitrariamente significativa.

Los destinos systemd crean una manera fácil para que los administradores de sistemas recopilen temporizadores, servicios u otros destinos juntos para representar un estado específico para su sistema. En esencia, reiniciar, apagar y apagar también son objetivos de systemd.

Ejemplos de objetivos de sistemas

Nivel de ejecucióndestino systemdObjetivo
default.targetPara iniciar un sistema con un enlace simbólico a graphical.target o multi-user.target
5objetivo gráficoConfigure el sistema para admitir inicios de sesión gráficos y basados ​​en texto, y múltiples usuarios.
3multi-user.targetConfigure el sistema en un sistema no gráfico multiusuario
detener objetivoDetenga el sistema sin apagarlo.
poeweroff.targetApague y apague el sistema
1, solteroobjetivo de rescateConfigure el sistema en un shell de rescate con su indicador de inicio de sesión
objetivo.de.emergenciaEstablezca su indicador de inicio de sesión y la raíz del sistema montada en / solo lectura
4objetivo.personalizadoEstablecer objetivos personalizados

Comandos básicos de systemd target

Para enumerar todos los objetivos disponibles:

$ systemctl list-unit-files –type target

Para ver las dependencias de destino:

# systemctl list-dependencies rescue.target | grep target
objetivos systemd
dependencias de los objetivos de systemd

Para verificar el objetivo predeterminado:

# systemctl get-default
graphical.target

Para cambiar al objetivo multiusuario:

# systemctl isolate multi-user.target

seguridad del servicio systemd

systemd puede ofrecer una forma práctica de proporcionar protección adicional para servicios personalizados y servicios enviados con su distribución de Linux. También puede utilizar el comando de seguridad systemd-analyse para obtener una auditoría de seguridad rápida de los servicios. Enumerará una unidad de servicio con su calificación de puntuación de exposición de seguridad asociada de 0 a 10.

# systemd-analyze security
seguridad del servicio systemd
seguridad del servicio systemd

Nota: Las puntuaciones más bajas son más seguras, pero se basan completamente en la utilización de las funciones de seguridad de un servicio proporcionadas por systemd. No considera las características de seguridad integradas de los programas ni las proporcionadas por políticas de control de acceso como SELinux.

También puede analizar las directivas de seguridad de un servicio con el siguiente comando:

# systemctl-analyze security foo.service

El comando anterior generará un informe de las directivas de seguridad aplicadas a foo.service. El informe destacará las secciones y configuraciones que necesitan mejoras para mejorar la seguridad. Por ejemplo, puede cambiar las políticas de acceso de lectura y escritura o editar una unidad de servicio para reforzar la seguridad.

Para realizar cambios en una unidad de servicio:

# systemctl edit foo.service

Para que systemd sea consciente de los cambios en el archivo de anulación:

# systemctl daemon-reload

Para hacer que los cambios surtan efecto

# systemctl restart foo.service

Equivalente de Systemd de los comandos SysVinit.

comando systemdComando SysVinitDescripción
systemctl start fooservicio foo startIniciar un servicio
systemctl stop fooservicio foo stopDetener un servicio
systemctl reiniciar fooreiniciar el servicio fooReiniciar un servicio
systemctl reload fooservicio foo recargaVuelva a cargar el archivo de configuración sin interrumpir las operaciones
systemctl condrestart fooservicio foo condrestartReiniciar un servicio que ya se está ejecutando
systemctl status fooservicio foo statusCompruebe si el servicio se está ejecutando o no
systemctl
o
systemctl list-unit-files –type = service
o
ls /lib/systemd/system/*.service /etc/systemd/system/*.service
ls /etc/rc.d/init.d/Enumere los servicios que se pueden iniciar o detener
Enumere todos los servicios y unidades.
systemctl deshabilitar foochkconfig foo offApague el servicio para el próximo reinicio
systemctl está habilitado para foochkconfig fooCompruebe si un servicio está configurado para iniciarse o no.
systemctl list-unit-files –type = service
o
ls /etc/systemd/system/*.wants/
chkconfig --listServicios de impresión y niveles de ejecución
systemctl list-dependencies graphical.targetchkconfig --list | grep 5: activadoServicios de impresión que se iniciarán al arrancar
ls /etc/systemd/system/*.wants/foo.servicechkconfig foo --listEnumere los niveles que un servicio está configurado para activar o desactivar.
systemctl daemon-reloadchkconfig foo --addPara recargar nuevas configuraciones

Aprenda más de las páginas del manual systemd.unit o una guía de systemd del proyecto Fedora que encuentro muy informativo con extensos ejemplos y explicaciones.

Conclusión

systemd puede proporcionar formas eficientes para la administración del sistema y la resolución de problemas a través de la introspección de registros. Los usuarios pueden crear un sistema robusto, versátil y seguro a través de sus componentes principales, como servicios, objetivos, temporizadores, registros y funciones de seguridad. Si ha utilizado SysVinit, apreciará sus scripts de naturaleza abierta. systemd, por otro lado, es fácil de usar, potente y puede gestionar todos los aspectos de un sistema Linux.

El próximo artículo de esta serie analizará la programación de tareas con temporizadores systemd para automatizar las tareas aburridas en su sistema Linux.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir