Introducción a los conceptos básicos de systemd
- DESCRIPCIÓN
systemd
se utiliza para gestionar los ajustes y los servicios del sistema.systemd
organiza las tareas en componentes denominados unidades y los grupos de unidades en destinos.- INTENCIÓN
Conocer los conceptos básicos de
systemd
, que incluyen funciones esenciales como la gestión de servicios, el seguimiento de dependencias, el registro, la gestión de recursos, la activación de sockets y el control del sistema.- ESFUERZO
20 minutos de lectura.
- REQUISITOS
Conocimientos básicos de los comandos de Linux
Conocimientos básicos de los procesos, daemons y grupos de control de Linux
1 ¿Qué es systemd
? #
systemd
es un gestor del sistema y de servicios para sistemas operativos Linux. Es el sistema de inicialización por defecto para las principales distribuciones de Linux. El usuario no inicia directamente systemd
, sino que se instala mediante /sbin/init
y se inicia durante el arranque inicial. cuando se ejecuta como el primer proceso de arranque (PID 1), systemd
actúa como el sistema init que activa y mantiene los servicios de espacio de usuario. El PID 1 se conoce como init y es el primer proceso del modo de usuario de Linux que se crea. Se ejecuta hasta que se apaga el sistema.
PID 1 pertenece a systemd
y se inicia directamente desde el kernel. Todos los demás procesos los inicia directamente systemd
o uno de sus subprocesos. systemd
monta el sistema de archivos del host y gestiona los archivos temporales. Es retrocompatible con los guiones init de SysV. SysV es un sistema de inicialización anterior a systemd
.
En systemd
, una unidad es un recurso que el sistema sabe cómo operar y gestionar. Este es el objeto principal que utilizan las herramientas systemd
. Estos recursos se definen con archivos de configuración denominados archivos de unidad.
systemctl
es la herramienta de gestión central para controlar el sistema init. Se utiliza para examinar y controlar el estado del gestor del sistema y de servicios systemd
.
En systemd
, los destinos son grupos de unidades relacionadas que actúan como puntos de sincronización durante el arranque del sistema. Los archivos de unidad de destino tienen la extensión de archivo .target
. Las unidades de destino agrupan varias unidades systemd
a través de una cadena de dependencias.
Para la resolución de problemas, puede utilizar journalctl
, que se emplea para consultar y mostrar mensajes de registro del diario systemd
.
Para obtener más información sobre systemd
, puede consultar https://systemd.io y man 1 systemd
.
2 Acerca del proceso de arranque de systemd
#
El primer paso del proceso de arranque es cargar el kernel de Linux, que es el componente principal del sistema operativo Linux. Una vez que se carga el kernel, inicializa el hardware e inicia el proceso systemd
, que es el primer proceso que se ejecuta en el sistema.
2.1 Proceso de arranque de Linux #
El proceso de arranque de Linux es la etapa inicial del inicio del sistema operativo. En él, el sistema operativo carga la memoria, inicializa los componentes y se prepara para ejecutar las aplicaciones de usuario.
El proceso de arranque de Linux se divide en cuatro fases principales:
- Fase 1: BIOS
Cuando enciende el equipo, este inicia el BIOS (sistema básico de entrada/salida) y realiza una prueba POST (autoprueba de encendido). Se trata de una comprobación de integridad que sondea la funcionalidad del hardware de componentes como discos duros, SSD, teclado, RAM, puertos USB y cualquier otro hardware. Si el hardware funciona como se espera, el proceso de arranque pasa a la siguiente fase.
- Fase 2: el cargador de arranque
Una vez finalizada la POST, el BIOS busca y carga el programa del cargador de arranque almacenado en el MBR (registro de arranque principal). El MBR es un código de 512 bytes que normalmente se encuentra en
/dev/sda
o en/dev/hda
, en función de la arquitectura del disco duro. El MBR también se puede ubicar en una unidad de USB o de DVD de Linux. El BIOS carga y ejecuta este código de MBR.Hay tres cargadores de arranque principales en Linux: LILO, GRUB y GRUB2. El cargador de arranque GRUB2 (Grand Unified Bootloader) es el principal y el más reciente de las distribuciones Linux modernas. El archivo de configuración de GRUB2 está ubicado en
/boot/grub2/grub2.cfg
. Una vez que el BIOS localiza el cargador de arranque GRUB2, lo ejecuta y lo carga en la memoria principal (RAM).- Fase 3: inicialización del kernel de Linux
El kernel de Linux es el corazón del sistema operativo. En el sistema Linux, el kernel interactúa con el hardware, controla la gestión de la memoria y gestiona los procesos. El cargador de arranque carga el kernel de Linux seleccionado. El kernel se extrae automáticamente de una versión comprimida y monta el sistema de archivos raíz. A continuación, ejecuta el programa
/sbin/init
.- Fase 4:
systemd
El kernel carga
systemd
, que es un gestor del sistema y de servicios para los sistemas operativos Linux. A continuación,systemd
ejecuta todos los demás procesos de inicialización.
2.2 Proceso de arranque con systemd
#
Una vez que el kernel carga systemd
, systemd
toma el control e inicia los demás servicios del sistema necesarios para ponerlo en funcionamiento. Esto incluye servicios como el servicio de red, el gestor de inicio de sesión, etc.
El proceso de arranque se paraleliza en el orden en que se ejecutan las unidades de destino específicas. systemd
utiliza el archivo /etc/systemd/system/default.target
para determinar el destino en el que debe arrancar el sistema Linux. Este archivo es un enlace a graphical.target
que arranca el gestor de inicio de sesión gráfica. systemd
activa todas las unidades de destino que son dependencias de default.target
, así como, de forma recurrente, todas las dependencias de estas dependencias. Una vez iniciados todos los servicios, el sistema estará listo para utilizarse y aparecerá el gestor de inicio de sesión. Ahora puede iniciar sesión y empezar a utilizar el sistema.
2.3 Análisis del rendimiento del proceso de arranque del sistema con el comando systemd-analyze
#
Utilice el comando systemd-analyze
para analizar el rendimiento del proceso de arranque del sistema. El comando también se puede utilizar para recuperar otra información de estado y seguimiento del gestor del sistema y de servicios. Se utiliza para comprobar que los archivos de unidad son correctos y también para acceder a funciones especiales útiles para la depuración avanzada del gestor del sistema.
Algunos ejemplos son:
- Visualización del tiempo que tarda el sistema en arrancar
>
systemd-analyze time Startup finished in 3.404s (kernel) + 2.415s (initrd) + 13.125s (userspace) = 18.945s graphical.target reached after 13.117s in userspace- Obtención de una descripción general de alto nivel del proceso de arranque, que incluye los servicios que se inician y el tiempo que tarda cada servicio en iniciarse
>
systemd-analyze critical-chain The time when unit became active or started is printed after the "@" character. The time the unit took to start is printed after the "+" character. graphical.target @13.117s └─multi-user.target @13.117s └─getty.target @13.117s └─getty@tty1.service @13.116s └─plymouth-quit-wait.service @10.775s +2.338s └─systemd-user-sessions.service @10.769s +3ms └─remote-fs.target @10.764s └─iscsi.service @10.747s +16ms └─network-online.target @10.744s └─NetworkManager-wait-online.service @1.547s +9.197s └─NetworkManager.service @1.507s +37ms └─network-pre.target @1.504s └─wpa_supplicant.service @2.341s +5ms └─dbus.service @1.042s └─basic.target @1.036s └─sockets.target @1.036s └─snapd.socket @1.035s +590us └─sysinit.target @1.030s └─systemd-update-utmp.service @1.025s +5ms └─auditd.service @976ms +47ms └─systemd-tmpfiles-setup.service @964ms +9ms └─local-fs.target @962ms └─snapd.mounts.target @961ms └─snap-core18-2796.mount @417ms +543ms └─dev-loop9.device @961ms +628usEste comando imprime un árbol de unidades de tiempo crítico para cada una de las unidades especificadas o para el destino por defecto. La inicialización de los servicios puede depender de la activación del socket y de la ejecución paralela de las unidades. Al igual que el comando
blame
, muestra el tiempo que tarda una unidad en activarse, que no está definido para unidades como las de dispositivo que pasan directamente al estado activo.- Visualización de una lista de servicios iniciados durante el proceso de arranque y mostrados según el tiempo que tarda cada servicio
>
systemd-analyze blame 9.197s NetworkManager-wait-online.service 4.002s fwupd.service 2.338s plymouth-quit-wait.service 1.282s dracut-pre-udev.service 1.062s sys-devices-platform-serial8250-tty-ttyS0.device 1.062s dev-ttyS0.device 1.061s dev-ttyS1.device 1.061s sys-devices-platform-serial8250-tty-ttyS1.device 1.060s dev-ttyS11.device 1.060s sys-devices-platform-serial8250-tty-ttyS11.device 1.059s sys-devices-platform-serial8250-tty-ttyS13.device 1.059s dev-ttyS13.device 1.059s sys-devices-platform-serial8250-tty-ttyS10.device 1.059s dev-ttyS10.device 1.058s sys-devices-platform-serial8250-tty-ttyS14.device 1.058s dev-ttyS14.device 1.058s dev-ttyS12.device 1.058s sys-devices-platform-serial8250-tty-ttyS12.device 1.056s sys-devices-platform-serial8250-tty-ttyS17.deviceLa inicialización de un servicio puede ser lenta porque esté esperando a que se complete la inicialización de otro. Muestra el tiempo que tarda una unidad en activarse, que no está definido para unidades como las de dispositivo que pasan directamente al estado activo. Este comando no muestra los resultados de los servicios con
Type=simple
, porquesystemd
considera que estos servicios se inician inmediatamente, por lo que no se pueden analizar los retrasos de inicialización.- Generación de un archivo de gráficos vectoriales que muestra los eventos que tienen lugar durante el proceso de arranque
>
systemd-analyze plot > /temp/sample.svgEste comando crea un archivo SVG en el directorio
temp
. El archivo SVG es un archivo de texto que define un conjunto de vectores gráficos que utilizan aplicaciones como LibreOffice Draw para generar un gráfico.
3 Estructura de un archivo de unidad #
En systemd
, una unidad hace referencia a cualquier recurso que el sistema sabe cómo operar y gestionar. Este es el objeto principal que utilizan las herramientas systemd
. Estos recursos se definen mediante archivos de configuración denominados archivos de unidad. A la hora de trabajar con systemd
, la administración es más fácil cuando se comprenden los archivos de unidad. Los archivos de unidad utilizan una sintaxis declarativa simple que permite ver fácilmente el propósito y los efectos de una unidad al activarse. Los archivos de unidad tienen secciones con directivas, por ejemplo:
[Section] Directive1=value Directive2=value . . .
Los tipos de archivos de unidad incluyen las siguientes secciones:
-
[Unit]
La primera sección que se encuentra en la mayoría de los archivos de unidad es
[Unit]
. Esta sección se utiliza para definir los metadatos del archivo de unidad y configurar la relación del archivo de unidad con otros archivos de unidad. Esta sección se suele colocar en la parte superior porque proporciona una descripción general del archivo de unidad.-
[Automount] / [Mount] / [Path] / [Service] / [Slice] / [Socket] /[Swap] / [Timer]
Estas secciones contienen directivas específicas para su tipo respectivo. Consulte la Sección 4, “Tipos de archivos de unidad” para obtener una lista de los tipos disponibles. Tenga en cuenta que los tipos
device
,target
,snapshot
yscope
no tienen una sección específica de tipo.-
[Install]
Suele ser la última sección del archivo de unidad y es opcional. Se utiliza para definir el comportamiento de un archivo de unidad cuando está habilitado o inhabilitado. Cuando se habilita un archivo de unidad, se inicia automáticamente al arrancar. Según la unidad específica, podría haber una dependencia en otras unidades relacionadas necesaria para funcionar correctamente. Por ejemplo,
chrony
requiere las directivasAfter
,Wants
yBefore
, que son todas las dependencias con las que tiene que trabajarchrony
.
systemd
#[Unit] Description=usbguard 1 [Service] ExecStart=/usr/sbin/usb-daemon 2 [Install] WantedBy=multi-user.target 3
4 Tipos de archivos de unidad #
Puede determinar el tipo de unidad según su extensión de archivo. systemd
clasifica las unidades según el tipo de recurso que describen.
Tipos de archivos de unidad disponibles para systemd
:
-
.service
Describe cómo gestionar un servicio o una aplicación. Esto incluye cómo iniciar o detener el servicio, volver a cargar su archivo de configuración (si procede), en qué condiciones se inicia el servicio automáticamente y la información de dependencia o jerarquía de los archivos de unidad relacionados.
-
.scope
Este archivo de unidad lo crea automáticamente
systemd
a partir de la información recibida de la interfaz D-Bus y se utiliza para gestionar conjuntos de procesos del sistema que se crean externamente.-
.path
Define una vía para la activación basada en vías. Por defecto, se activa un archivo de unidad
.service
con el mismo nombre base.inotify
es una API del kernel que utilizan los programas que desean recibir notificaciones sobre cambios en los archivos.-
.snapshot
El comando
systemctl snapshot
crea automáticamente un archivo de unidad.snapshot
. Este comando crea instantáneas temporales del estado actual del sistema. Puede modificar el estado actual del sistema después de realizar cambios. Las instantáneas se utilizan para deshacer estados temporales.-
.timer
Define un temporizador gestionado por
systemd
. Esto es similar a una trabajo cron para la activación programada o retrasada. Un archivo de unidad con el mismo nombre, pero con la extensión de archivo.service
se inicia cuando se alcanza el temporizador.-
.slice
Asocia nodos de grupo de control de Linux, que permiten asignar o restringir recursos a cualquier proceso asociado con el segmento. El nombre indica la jerarquía dentro del árbol del grupo de control. Las unidades se colocan en sectores por defecto en función de su tipo.
-
.target
Proporciona sincronización para otras unidades durante el arranque o un cambio de estado, o lleva el sistema a un nuevo estado. Otras unidades especifican su relación con los destinos para sincronizarse con las operaciones del destino.
-
.socket
Describe una red, un zócalo IPC o un búfer FIFO que
systemd
utiliza para la activación basada en zócalos. Hay un archivo.service
asociado que se inicia cuando se ve una actividad en el zócalo que define esta unidad.-
.device
Define un dispositivo que ha sido designado para la gestión de
systemd
porudev
o un sistema de archivossysfs
. No todos los dispositivos tienen el archivo.device
. Este archivo de unidad es necesario para realizar pedidos, montar un dispositivo o acceder a uno.-
.swap
Define el espacio de intercambio en el sistema. El nombre del archivo de unidad debe reflejar el dispositivo o la vía de archivo del espacio.
-
.mount
Define un punto de montaje en el sistema que debe gestionar
systemd
. Este archivo recibe el nombre de la vía de montaje y las barras inclinadas se convierten en guiones. Las entradas incluidas en/etc/fstab
pueden tener unidades creadas automáticamente.-
.automount
Define un punto de montaje que se monta automáticamente. Nombra el archivo según el punto de montaje al que hace referencia. Se requiere un archivo de unidad
.mount
que coincida para definir los detalles del montaje.
5 Dependencias y orden de las unidades #
systemd
tiene dos tipos de dependencias: dependencias de requisitos y de orden. Las dependencias de requisitos especifican qué otras unidades deben estar iniciadas o detenidas al activar una unidad. Las dependencias de orden especifican el orden en el que se deben iniciar las unidades.
Dependencias de la unidad
Los archivos de unidad tienen la función de dependencias. Una unidad puede pedir a otras unidades que se ejecuten (want) o puede requerir (require) que haya otras unidades en ejecución para poder ejecutarse. Estas dependencias se definen en archivos de unidad con las directivas Wants
y Requires
.
-
Wants
Por ejemplo, si la unidad A tiene
Wants=unit B
, cuando se ejecuta la unidad A, también se ejecuta la unidad B. Pero da igual si la unidad B se inicia correctamente o no para que la unidad A se ejecute correctamente.-
Requires
Si la unidad A tiene
Requires=unit B
, ambas unidades se ejecutan, pero si la unidad B no lo hace correctamente, la unidad A se desactiva. No importa si los procesos de la unidad A se estaban ejecutando correctamente.
Orden de las unidades
systemd
puede ejecutar un grupo de unidades al mismo tiempo, pero iniciar los servicios en el orden correcto es importante para el buen funcionamiento del sistema Linux. Puede organizar el orden con las directivas de archivo de unidad Before
y After
.
-
Before
Por ejemplo, si la unidad A tiene
Before=unit B
, cuando se ejecutan ambas unidades, la unidad A se ejecuta completamente antes que la unidad B.-
After
Si la unidad A tiene
After=unit B
, cuando ambas unidades se ejecutan, la unidad B se ejecuta completamente antes que la unidad A.
6 Registro #
Los archivos de registro y los diarios son importantes para la administración del sistema. Proporcionan información detallada sobre un sistema y son muy importantes para la resolución de problemas y la auditoría. Los archivos de registro contienen eventos y mensajes generados por el kernel, las aplicaciones y los usuarios que inician sesión en el sistema. Puede utilizar el comando journalctl
para consultar el diario. Este comando muestra los registros recopilados por systemd
. El servicio systemd-journald
gestiona la recopilación de registros de systemd
. systemd-journald
guarda los eventos y los mensajes en formato binario.
7 Destinos de systemd
#
systemd
utiliza unidades y destinos. Una unidad de systemd
define un servicio o una acción en el sistema, que consta de un nombre, un tipo y un archivo de configuración. Un destino de systemd
combina varias unidades y define qué servicios deben iniciarse para alcanzar el destino. En un servidor, por ejemplo, se trata de un estado en el que la red se está ejecutando y varios usuarios pueden iniciar sesión. Estos archivos se identifican mediante el sufijo .target
.
Al igual que en los archivos de unidad, los distintos destinos se pueden anidar mediante dependencias. Por ejemplo, multi-user.target
requiere (entre otros) los destinos que configuran los servicios de inicio de sesión y de sesión de usuario.
Destinos de systemd
comunes:
-
default.target
Arranca por defecto. El archivo
default.target
es un enlace simbólico al archivo de destino real, por ejemplographical.target
para una estación de trabajo de escritorio. Para un servidor, normalmente esgraphical.target
.-
poweroff.target
Apaga y desactiva el sistema.
-
rescue.target
La unidad de destino que extrae el sistema base e inicia una sesión de shell de rescate.
-
multi-user.target
Configura un sistema multiusuario no gráfico (consola).
-
graphical.target
Utiliza un sistema gráfico multiusuario con servicios de red.
-
reboot.target
Apaga y rearranca el sistema.
Para obtener más información sobre los destinos de systemd
, consulte las páginas man 5 systemd.target y man 7 systemd.special.
8 Uso de systemd
como usuario normal #
Puede utilizar systemd
como usuario normal para mejorar la seguridad o cuando no tenga privilegios de usuario root
. La ejecución de un servicio sin privilegios se puede realizar creando un servicio de user
.
Al crear y utilizar un servicio de usuario, tenga en cuenta lo siguiente:
Las sesiones de los servicios de usuario finalizan cuando finaliza la sesión del usuario. Esto se puede anular mediante el comando
loginctl enable-linger USERNAME
.Los archivos del servicio de usuario se encuentran en
/etc/systemd/user
o en$HOME/.config/systemd/user/
.Puede controlar los servicios de usuario con el comando
systemctl --user
.
9 Comandos de systemctl
#
El comando systemctl
se utiliza para examinar y controlar el estado de systemd
y del gestor de servicios.
Puede utilizar los siguientes comandos systemctl
comunes y consultar la página man systemctl.
9.1 Visualización de información de systemd
#
Para ver información acerca de los componentes de systemd
, puede utilizar los siguientes comandos:
- systemctl list-units
Muestra las unidades
systemd
. Puede utilizar los argumentos opcionales:‑‑state=running
para mostrar las unidades activas y--type=service
para mostrar las unidades de las que se ha salido y las activas.- systemctl list-unit-files
Muestra las unidades de
systemd
y el estado, como estática, generada, inhabilitada, alias, enmascarada y habilitada.- systemctl list-dependencies
Muestra el árbol de dependencias.
- systemctl list-dependencies UNIT_FILE
Muestra las dependencias de un archivo de unidad.
9.2 Gestión de servicios de systemd
#
El comando systemctl
permite realizar las siguientes tareas con los servicios.
- systemctl status SERVICE
Comprueba el estado del servicio específico.
- systemctl show SERVICE
Muestra la información del servicio.
- systemctl start SERVICE
En lugar de iniciar manualmente el servicio, se usa el comando
start
. Cuando se realiza un cambio en el archivo de configuración, el servicio relacionado debe iniciarse de nuevo.- systemctl stop SERVICE
Detiene un servicio específico en ejecución.
- systemctl restart SERVICE
En lugar de reiniciar manualmente el servicio, se usa el comando
restart
. Cuando se realiza un cambio en el archivo de configuración, el servicio relacionado debe reiniciarse de nuevo.- systemctl enable SERVICE
Habilita el servicio al arrancar.
- systemctl disable SERVICE
Inhabilita el servicio al arrancar.
- systemctl reload-or-restart SERVICE
Vuelve a cargar el servicio si admite la recarga; de lo contrario, reinicia el servicio. Si el servicio no se está ejecutando, se reinicia.
- systemctl mask SERVICE
Cuando un servicio está enmascarado, significa que el archivo de unidad está enlazado simbólicamente a
/dev/null
. Se crea un enlace simbólico para un servicio enmascarado desde/etc/systemd/system
que señala a/dev/null
. Esto hace que sea imposible cargar el servicio incluso si otro servicio habilitado lo requiere. Debe detenerse manualmente o continuará ejecutándose en segundo plano. Puede utilizar la opción--runtime
para enmascararlo solo temporalmente hasta el siguiente rearranque del sistema.Created symlink /etc/systemd/system/FOSSLinux.service → /dev/null.
- systemctl unmask SERVICE
Desenmascara el servicio. Es efectivo cuando el sistema se inicia o reinicia manualmente.
9.3 Gestión de estados del sistema #
El comando systemctl
permite realizar procesos de gestión de energía en el sistema, como reiniciar, apagar, etc., como se describe a continuación.
- systemctl reboot
Rearranca el sistema
reboot.target
.- systemctl poweroff
Apaga el sistema
poweroff.target
.- systemctl emergency
Entra en el modo de emergencia
emergency.target
.- systemctl default
Vuelve al destino por defecto
multi-user.target
.
10 Resolución de problemas de systemd
#
Puede utilizar las siguientes sugerencias de resolución de problemas para identificar y resolver problemas con los servicios de systemd
y garantizar un funcionamiento sin problemas del sistema.
-
Compruebe la sintaxis del archivo de unidad
systemd
consystemd-analyze verify SERVICE
Antes de iniciar o habilitar un servicio
systemd
, compruebe la sintaxis del archivo de unidad para asegurarse de que no hay errores. Por ejemplo:>
sudo
systemd-analyze verify /etc/systemd/system/my-custom-service.serviceEl comando analiza el archivo de unidad e informa de los errores de sintaxis, los archivos que faltan u otros problemas. Debe solucionar los problemas notificados antes de habilitar e iniciar el servicio.
-
Compruebe los registros de su servicio con el comando
journalctl -u SERVICE
Si experimenta algún problema con un servicio
systemd
, consulte el registro del servicio. Por ejemplo:>
sudo
journalctl -u my-custom-service.serviceEl comando muestra los registros del servicio especificado, incluidos los mensajes de error, las advertencias u otra información relevante. Puede utilizar estos registros para identificar y solucionar problemas con el servicio.
-
Utilice el comando
systemd-analyze plot
para visualizar el proceso de arranque Si un servicio está causando problemas durante el proceso de arranque, puede utilizar
systemd-analyze plot command
para visualizar el proceso de arranque e identificar problemas. Por ejemplo:>
sudo
systemd-analyze plot > boot-plot.svgEl comando crea un archivo SVG denominado
boot-plot.svg
que contiene una representación gráfica del proceso de arranque y los posibles problemas. Esto incluye la hora de inicio y finalización de cada servicio. Puede abrir este archivo en un visor de imágenes compatible con SVG o en un navegador Web para analizar los servicios que están causando problemas durante el proceso de arranque.- Resolución de problemas de servicios que fallan
Para averiguar qué servicios han fallado e inspeccionar la salida del registro:
>
sudo
systemctl --state=failed- Comprobación del estado de tiempo de ejecución de un servicio
Para averiguar el estado de tiempo de ejecución actual de un servicio:
>
sudo
systemctl status SERVICE- El apagado o el rearranque llevan mucho tiempo
Si el apagado o el rearranque tardan mucho tiempo, puede deberse a un servicio que no se está cerrando.
systemd
espera algún tiempo a que se cierre cada servicio antes de intentar terminarlo. Un problema común es que haya un servicio suspendido o un proceso de apagado que se haya quedado atascado. Para averiguar si es el caso, utilice lo siguiente:>
sudo
systemctl poweroff Failed to power off system via logind: There's already a shutdown or sleep operation in progress>
sudo
systemctl list-jobsPuede cancelar los trabajos en ejecución y en espera y volver a apagar o rearrancar:
>
sudo
systemctl cancel>
sudo
systemctl stop systemd-suspend.service
11 Prácticas recomendadas de systemd
#
Puede seguir algunas prácticas recomendadas para garantizar que los servicios de systemd
equipados sean eficientes a la hora de manejar diferentes situaciones.
- Compruebe el estado de tiempo de ejecución de un servicio
Para averiguar el estado de tiempo de ejecución actual de un servicio:
>
sudo
systemctl status SERVICE-
Use una vía absoluta en el archivo de unidad
systemd
Utilice una vía absoluta para los archivos ejecutables y los archivos necesarios, como los archivos de configuración o los guiones del archivo de unidad
systemd
.systemd
no se basa en las variables de entorno del usuario como$PATH
para localizar archivos.- Use la directiva ExecReload
Utilice la directiva ExecReload de la sección
[SERVICE]
cuando desee definir un comando específico que deba ejecutarse cuando cargue de nuevo un servicio con el comandosystemctl reload
. Esto es útil para los servicios que pueden volver a cargar dinámicamente su configuración sin reiniciar.[Service] ExecStart=PATH_TO_EXECUTABLE ExecReload=PATH_TO_RELOAD_SCRIPT
- Use la directiva RestartSec
Utilice la directiva RestartSec de la sección
[SERVICE]
cuando desee definir un retraso (en segundos) antes de que se reinicie el servicio después de un fallo. Esto es útil para los servicios que requieren un tiempo especificado para liberar recursos o evitar bucles de reinicio rápido que pueden provocar una carga alta del sistema.[Service] ExecStart=PATH_TO_EXECUTABLE Restart=on-failure RestartSec=5
- Inhabilite el modo de emergencia en un equipo remoto
Puede inhabilitar el modo de emergencia en un equipo remoto, por ejemplo, un equipo virtual alojado en Google Cloud. Si este modo está habilitado, el equipo no podrá conectarse a la red. Por ejemplo:
>
sudo
systemctl mask emergency.service>
sudo
systemctl mask emergency.target
12 Información legal #
Copyright © 2006 –2024 SUSE LLC y colaboradores. Reservados todos los derechos.
Está permitido copiar, distribuir y modificar este documento según los términos de la licencia de documentación gratuita GNU, versión 1.2 o (según su criterio) versión 1.3. Este aviso de copyright y licencia deberán permanecer inalterados. En la sección titulada “GNU Free Documentation License” (Licencia de documentación gratuita GNU) se incluye una copia de la versión 1.2 de la licencia.
Para obtener información sobre las marcas comerciales de SUSE, consulte https://www.suse.com/company/legal/. Todas las marcas comerciales de otros fabricantes son propiedad de sus respectivas empresas. Los símbolos de marcas comerciales (®, ™, etc.) indican marcas comerciales de SUSE y sus filiales. Los asteriscos (*) indican marcas comerciales de otros fabricantes.
Toda la información recogida en esta publicación se ha compilado prestando toda la atención posible al más mínimo detalle. Sin embargo, esto no garantiza una precisión total. Ni SUSE LLC, ni sus filiales, ni los autores o traductores serán responsables de los posibles errores o las consecuencias que de ellos pudieran derivarse.