Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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