Pages : 1
#1 Le 13/04/2017, à 16:59
- neodc
Systemd et service qui change de pid au reload
Hello,
J'ai un service (que j'ai développé) qui offre la possibilité de faire un redémarrage sans coupure (ce que j'appelle un reload), pour ce faire j'envoie un signal (USR1) a l'ancien process puis lance le nouveau avec une option en plus (--reload), il communique alors pour se transmettre les infos puis l'ancien se coupe.
Tout ceci fonctionne sans souci si je le fais manuellement, les problèmes commencent quand je veux offrir cette possibilité au travers de systemd.
J'utilise pour le moment ce script :
[Unit]
Description=Stargate
[Service]
Type=forking
PIDFile=/var/run/stargate.pid
Environment="RUST_LOG=stargate=info"
ExecStart=/usr/local/bin/stargate --deamon /etc/stargate/config.json
ExecReload=/bin/sh -c "/bin/kill -USR1 $MAINPID && /usr/local/bin/stargate --deamon --reload /etc/stargate/config.json && sleep 5"
Restart=always
[Install]
WantedBy=multi-user.target
Quand je lance systemctl reload tout ce passe bien (le transfert a bien lieu) mais dès que le sleep ce fini (je l'ai ajouté pour le débug, sinon ça plantait directe) mon nouveau service ce fait kill, la seule chose que me dit systemd c'est qu'il est mort après un SIGKILL mais aucune idée de qui l'envoi ni de pourquoi.
Quelqu'un aurait une idée ?
Hors ligne
Pages : 1