
Tengo un script systemd que es el siguiente:
[Unit]
Description=My sites
Before=shutdown.target reboot.target halt.target
[Service]
Type=oneshot
ExecStart=/bin/bash -c '/etc/xxx/mySites start'
ExecStop=/bin/bash -c '/etc/xxx/mySites stop'
KillMode=none
SendSIGKILL=no
TimeoutStopUSec=5min
TimeoutSec=5min
TimeoutStopSec=5min
[Install]
WantedBy=multi-user.target
Ahora... si intento ejecutarlo, sudo systemctl start mySites.service
parece que el servicio se ejecuta y todas mis cosas se inician correctamente. Si hago un stop
también funciona. Luego, al iniciar el sistema operativo, también comienza correctamente. El problema está en el apagado del sistema operativo. Lo estoy reiniciando y parece que FUE ExecStop
llamado también... pero demasiado tarde... Veo en los registros que todos mis procesos fueron eliminados, como puedo ver en mis registros:
signal 15, SIGTERM, received from process 1 userId 0
si_code: 0, SI_USER, signal from kill(2), sigsend(2), raise(3C) or abort(3C)
si_signo 15 si_errno 0
Entonces... ExecStop
parece que me están llamando demasiado tarde porque alguien ya eliminó los procesos que inicié originalmente. Sin embargo, ya me estoy preparando Before=shutdown.target reboot.target halt.target
.
Creo que el problema podría ser que ExecStop
puede tardar más que el tiempo de espera predeterminado y, por lo tanto, systemd termina enviando SIGTERM. Ahora... he configurado KillMode=none
e SendSIKKILL=no
incluso todos los tiempos de espera posibles en 5 minutos para y TimeoutStopUSec
( seguro que me toma menos de 5 minutos).TimeoutSec
TimeoutStopSec
ExecStop
Todavía no hubo suerte.
¿Alguna idea de cómo puedo solucionar este problema? Estoy ejecutando CentOS 7.
Gracias de antemano,
Respuesta1
Intentar
[Unit]
Description=My sites
After=NetworkManager.service
Requires=NetworkManager.service
[Service]
Type=oneshot
ExecStart=/bin/bash -c '/etc/xxx/mySites start'
ExecStop=/bin/bash -c '/etc/xxx/mySites stop'
RemainAfterExit=true
[Install]
WantedBy=multi-user.target