Systemd, utiliser sysVinit pour un script

Bonjour,

Je suis en jessie amd64 avec systemd et systemd-sysv. J’ai un service (propriétaire) qui n’est pas installé par les paquets Debian. Ce service fournit un script de démarrage sysVinit. Ce script est assez gros et touffu et effectue un tétrachiée de taches avant de lancer le programme proprement dit. Je n’ai bien entendu pas accès au support de l’éditeur.

Ecrire une unit systemd pour ce script, qui est la solution préconisée par dans les releases notes de jessie, ne me semble pas envisageable vu la complexité du script, de plus je n’ai pas de temps à y consacrer.

J’aimerais plutôt que pour ce script, systemd passe la main à sysVinit qui le lance de manière traditionnelle. Je n’ai pas trouvé de pointeurs vers cette possibilité, sans doute faute d’avoir cherché avec les bons mots clefs.

Pour l’instant j’ai ceci

/usr/sbin/service mon_service start Failed to start mon_service Unit mon_service.service failed to load: No such file or directory.

A noter que cette commande fonctionne parfaitement sur des versions en sysVinit

Sur Jessie, pour que sysvinit reprenne la main :

Ca va désinstaller systemd-sysv et au redémarrage, ce sera sysvinit qui lancera le système. Mais systemd sera toujours là, tapis dans l’ombre.

En fait je veux toujours utiliser systemd qui ne me pose pas de soucis par ailleurs
Par contre, juste pour un script qui démarre un service particulier, je veux que ce soit sysVinit qui le gère, et que pour ce script la commande service ne fasse pas appel à systemctl

Tu peux peut être rajouter un service systemd qui pointe sur ton /usr/bin/xxxxx comme je l’ai fait pour rygel
forum.ubuntu-fr.org/viewtopic.p … #p19858801

[quote=“grandtoubab”]Tu peux peut être rajouter un service systemd qui pointe sur ton /usr/bin/xxxxx comme je l’ai fait pour rygel,
forum.ubuntu-fr.org/viewtopic.p … #p19858801[/quote]
Ça tient en 3 lignes de code

[quote=“grandtoubab”][quote=“grandtoubab”]Tu peux peut être rajouter un service systemd qui pointe sur ton /usr/bin/xxxxx comme je l’ai fait pour rygel,
forum.ubuntu-fr.org/viewtopic.p … #p19858801[/quote]
Ça tient en 3 lignes de code[/quote]

Pas ici, le script de lancement dans /etc/init.d/ exporte des variables, vérifie qu’il peut pinguer son hostname :open_mouth: , crée un fichier particulier, ajuste en fonction du noyau la mémoire partagée, teste des cas selon le type de serveur et sa configuration matérielle et installe différents modules noyau en fonction des résultats, en fonction des options installées dans le programme lance certains binaires ou pas (plusieurs binaires différents peuvent être lancés) et seulement après tout ça lance le programme proprement dit de manière classique.

Un tel bazar (et encore j’ai sans doute raté des subtilités dans le script), ça passe difficilement dans une unit systemd à moins d’y consacrer un temps fou

[quote=“Jolitorax”][quote=“grandtoubab”][quote=“grandtoubab”]Tu peux peut être rajouter un service systemd qui pointe sur ton /usr/bin/xxxxx comme je l’ai fait pour rygel,
forum.ubuntu-fr.org/viewtopic.p … #p19858801[/quote]
Ça tient en 3 lignes de code[/quote]

Pas ici, le script de lancement dans /etc/init.d/ exporte des variables, vérifie qu’il peut pinguer son hostname :shock: , crée un fichier particulier, ajuste en fonction du noyau la mémoire partagée, teste des cas selon le type de serveur et sa configuration matérielle et installe différents modules noyau en fonction des résultats, en fonction des options installées dans le programme lance certains binaires ou pas (plusieurs binaires différents peuvent être lancés) et seulement après tout ça lance le programme proprement dit de manière classique.

Un tel bazar (et encore j’ai sans doute raté des subtilités dans le script), ça passe difficilement dans une unit systemd à moins d’y consacrer un temps fou[/quote]
je ne te dis pas de recoder, je te dis que si tu as un executable disponible dans /usr/bin avec systemd tu peux le lancer par l’intermédiaire d’un service qui se code en 3 lignes

freedesktop.org/software/sys … rvice.html
[i]ExecStart=

Commands with their arguments that are executed when this service is started. The value is split into zero or more command lines is according to the rules described below (see section "Command Lines" below). [/i]

tu peux peut-etre essayer en mettant le nom du script que tu veux lancer