¿Cómo me salteo el tiempo de espera de los 90 en systemd

15

¿Es posible omitir interactivamente el tiempo de espera de los 90 en systemd? Por ejemplo, ¿cuándo está esperando que un disco esté disponible o el usuario cierre sesión? Sé que eventualmente fallará, así que ¿puedo hacer que falle ahora? Odio solo mirar la pantalla sin poder hacer nada.

user7610
fuente

Respuestas:

11

Tienes dos opciones:

  1. Puede configurar TimeoutStopSpec=una UNIDAD específica a un valor específico (en segundos *) para esperar. También puede configurarlo, infinityen cuyo caso SIGKILL nunca se enviará (no recomendado, ya que puede terminar con servicios fuera de control que son difíciles de depurar).

  2. Establezca DefaultTimeoutStopSec=dentro /etc/systemd/system.conf(o user.conf, o en uno de los *.ddirectorios) en un valor predeterminado que usarán todas las UNIDADES que no tengan TimeoutStopSpec=especificado. El valor predeterminado para esta configuración son los años 90 que normalmente ve.

Referencias de la página de manual:

  • man systemd.service para TimeoutStopSpec=
  • man systemd-system.conf para DefaultTimeoutStopSec=

* systemd también acepta especificaciones de tiempo, por ejemplo, "2min 3s". Eso se describe ampliamente en el hombre.

grochmal
fuente
10
Esto no es interactivo. Cuando el sistema ya está contando los años 90, es demasiado tarde para hacer estos cambios y me veo obligado a sentarme sin poder hacer nada.
user7610
@JiriDanek: eso se debe a que systemd no es interactivo, no debe serlo. Su proceso tty (en el que ve los 90) se ejecuta como un hijo de init (sytemd), es decir, el proceso que muestra (getty) los 90 es un hijo del proceso que los cuenta (systemd). Y además, systemd ignora la mayoría de las señales. systemd no está destinado a ser controlado por un usuario aleatorio frente a un tty (eso sería un gran riesgo de seguridad).
grochmal
44
Soy principalmente un usuario de escritorio, por lo que tiendo a ver las cosas de manera diferente. ¿Recuerdas la impresora de la hija de Torvalds ? Muchas deficiencias de diseño pueden justificarse por preocupaciones de seguridad.
user7610
@JiriDanek - systemd no es una preocupación , sería un vector de ataque real. Si pudiera apuntar una señal correcta en el momento correcto, podría (como usuario común) deshabilitar un servicio del sistema (por ejemplo, SELinux). Simplemente vaya a /etc/systemd/system.con y agregue DefaultTimeout = 3. O, mejor, arregle el servicio que está fallando. El hecho de que algún servicio siempre falle no es un mal diseño del sistema, es un mal diseño de la persona que escribió el archivo de la unidad.
grochmal
En mi caso específico, el escritor del archivo de la unidad es inocente. Acabo de hacer un error al copiar y pegar un UUID de disco. Simplemente me pareció irritante tener que esperar un minuto y medio completo antes de que systemd dejara de montar eso y me permitiera entrar al sistema y solucionar el problema. El largo tiempo de espera en realidad tiene sentido aquí. Excepto cuando el administrador sabe que no.
user7610
7

No es posible. Systemd no es interactivo.

user7610
fuente
6

Puedes descomentar en /etc/systemd/system.conflas líneas:

DefaultTimeoutStartSec=90s
DefaultTimeoutStopSec=90s

Y cambie el valor a lo que considere apropiado.

Msegade
fuente
77
Igual que la otra respuesta, esto no es interactivo. Cuando el sistema ya está contando los años 90, es demasiado tarde para hacer estos cambios y me veo obligado a sentarme sin poder hacer nada.
user7610