J'utilise un service systemd qui appelle un processus lorsqu'il a été "démarré" (par exemple, $ systemctl start test.service). Selon la conception, le processus reste pour toujours dans une boucle, nous pouvons voir l'existence du processus à l'aide de la commande 'ps'. Nous avons également vu que le processus est tué (comme prévu) pour la commande systemctl stop. Cependant, notre exigence est la suivante: nous voulons procéder à certaines opérations d'arrêt sécurisées dans le cadre du processus avant qu'il ne soit tué. Mais je ne suis pas sûr de savoir comment détecter un arrêt de fonctionnement dans le processus.
Une commande systemctl stop test.service envoie-t-elle un signal SIGKILL ou SIGTERM pour mettre fin au processus? Comment puis-je détecter une opération d'arrêt systemctl à partir d'un processus?
Par défaut, un SIGTERM est envoyé, suivi de 90 secondes d’attente suivi d’un SIGKILL.
Tuer des processus avec systemd
est très personnalisable et bien documenté.
Je recommande de lire tous les man systemd.kill ainsi que de lire sur ExecStop = in man systemd.service en tant que document toutes les options.