Tengo un problema realmente extraño con systemd
. Cuando emito un systemctl restart
, comenzará el nuevo proceso antes de que finalice el anterior.
Esto se puede ver en el registro, donde el mensaje final de apagado ("registro de cierre") se registra después del mensaje de inicio ("registro de apertura").
¿Hay alguna forma de agregar un retraso entre la parada y el inicio del proceso?
systemctl stop myservice && sleep 3 && systemctl start myservice
Respuestas:
En sus archivos de servicio systemd, puede configurar la opción RestartSec para agregar un retraso para reiniciar. Ver ejemplo a continuación:
Mira este enlace para más ejemplos.
fuente
RestartSec
solo se aplica a los servicios configurados con laRestart=
directiva y no se tiene en cuenta al hacer unsystemctl restart someservice
RestartSec parece usarse solo si ese servicio en particular es el que se reinicia a través del comando systemctl restart.
Por ejemplo, tengo dos servicios, A y B.
y
Si realiza un reinicio de systemctl B, funciona como se esperaba ... pero si realiza un reinicio de systemctl A, ambos servicios se detienen y se reinician de inmediato, sin demora.
Aparentemente, Systemd solo está utilizando los valores de configuración para el servicio que especifique e ignorándolos para cualquier dependencia.
Esto no es tan raro como parece. Si B habla con un servidor remoto, el inicio y la detención rápida pueden fallar debido a que el extremo remoto rechaza al cliente. Pero reiniciar A directamente sucederá cada vez que A se actualice sin cambiar a B.
Probablemente pueda evitar esto agregando también el retraso a A, pero no debe NECESITAR hacerlo, ya que interrumpe el aislamiento de objetos al informar a A sobre B cuando no es una dependencia.
fuente