Si je comprends bien ton besoin, tu veux qu'un script s'exécute au démarrage du système et un autre à l'arrêt.
Tu avais fait ça en utilisant les actions start et stop d'un init script sysV, mais j'ai l'impression que ce n'est pas vraiment le fonctionnement prévu pour ces scripts et que ça fonctionnait par effet de bord (l'init sysV traditionnel n'ayant aucun moyen de savoir si un service fonctionne encore vraiment, il lance tous les stop prévu, qu'il y ait quelque chose à arrêter ou pas).
Systemd a essayer de maintenir autant que possible la compatibilité avec ces scripts d'init, mais il a visé le fonctionnement normal et le scripts qui comptaient sur un effet de bord des limitations d'init sysV ne vont plus forcément fonctionner comme prévu.
En l'occurrence, je pense que systemd constate, après avoir démarré ton «service» qu'il ne reste plus aucun processus qui tourne et en conclu que le service s'est terminé et qu'il n'y a donc plus rien à arrêter.
La solution est de faire un vrai service systemd en tenant compte du fonctionnement (documenté!) de systemd.
Je te recommande de lire les pages de manuel systemd.unit systemd.service et systemd.exec.
En particulier, je pense que l'option importante pour ce que tu veux faire est RemainAfterExit (dans le man systemd.service) qui permet de dire à systemd que le service doit encore être considéré comme actif même si tous les processus se sont terminés.
Tu combine ça avec ExecStart et ExecStop pour définir les scripts à exécuter au démarrage et à l'arrêt (le Type par défaut simple devrait faire l'affaire).
Tu ajoute une section Install où tu indique que ton service est WantedBy multi-user.target (ou celui qui est le plus adapté à ce que tu veux faire).
Un fois que tu systemctl enable ton service il devrait être automatiquement démarré au boot et arrêté au shutdown (parce que par défaut tous les services sont arrêtés au suhtdown, cf le paramètre DefaultDependencies dans man systemd.unit).
Note que si tu veux en plus que ton service soit arrêté quand le système est mis en veille et relancé quand il sort de veille, c'est plus compliqué (j'ai une solution qui fonctionne, mais elle n'est pas très élégante).
# faire des vrai services systemd
Posté par wismerhill . En réponse au message systemd et script au shutdown.... Évalué à 6.
Si je comprends bien ton besoin, tu veux qu'un script s'exécute au démarrage du système et un autre à l'arrêt.
Tu avais fait ça en utilisant les actions start et stop d'un init script sysV, mais j'ai l'impression que ce n'est pas vraiment le fonctionnement prévu pour ces scripts et que ça fonctionnait par effet de bord (l'init sysV traditionnel n'ayant aucun moyen de savoir si un service fonctionne encore vraiment, il lance tous les stop prévu, qu'il y ait quelque chose à arrêter ou pas).
Systemd a essayer de maintenir autant que possible la compatibilité avec ces scripts d'init, mais il a visé le fonctionnement normal et le scripts qui comptaient sur un effet de bord des limitations d'init sysV ne vont plus forcément fonctionner comme prévu.
En l'occurrence, je pense que systemd constate, après avoir démarré ton «service» qu'il ne reste plus aucun processus qui tourne et en conclu que le service s'est terminé et qu'il n'y a donc plus rien à arrêter.
La solution est de faire un vrai service systemd en tenant compte du fonctionnement (documenté!) de systemd.
Je te recommande de lire les pages de manuel systemd.unit systemd.service et systemd.exec.
En particulier, je pense que l'option importante pour ce que tu veux faire est RemainAfterExit (dans le man systemd.service) qui permet de dire à systemd que le service doit encore être considéré comme actif même si tous les processus se sont terminés.
Tu combine ça avec ExecStart et ExecStop pour définir les scripts à exécuter au démarrage et à l'arrêt (le Type par défaut simple devrait faire l'affaire).
Tu ajoute une section Install où tu indique que ton service est WantedBy multi-user.target (ou celui qui est le plus adapté à ce que tu veux faire).
Un fois que tu systemctl enable ton service il devrait être automatiquement démarré au boot et arrêté au shutdown (parce que par défaut tous les services sont arrêtés au suhtdown, cf le paramètre DefaultDependencies dans man systemd.unit).
Note que si tu veux en plus que ton service soit arrêté quand le système est mis en veille et relancé quand il sort de veille, c'est plus compliqué (j'ai une solution qui fonctionne, mais elle n'est pas très élégante).