Ci-dessous, je tente d'expliquer ce que je comprends de systemd. Mais je découvre moi-même en ce moment alors si je dis des bêtises j'accepte avec grand plaisir toute rectification. ;)
On 07/11/2015 22:01, Migrec wrote: > Ce qui m'embête avec cette histoire de systemd, c'est que on ne sait plus > vraiment si la config doit être dans /etc/init.d/ ou dans /lib/systemd... Pour moi, c'est au cas par cas, en fonction du paquet. Ce que j'ai compris, c'est que de toute façon c'est toujours systemd qui lance le service sous Jessie, que le package propose ou non un script init.d (c'est le côté un peu facho de systemd ;)). Ensuite, tu dois mettre la main sur le fichier unité pour comprendre comment réellement le service est lancé. Par exemple ssh : ~# systemctl show ssh.service | grep FragmentPath FragmentPath=/lib/systemd/system/ssh.service Le fichier unité est /lib/systemd/system/ssh.service et dedans on peut y voir : ExecStart=/usr/sbin/sshd -D $SSHD_OPTS Donc le script init.d n'est absolument pas utilisé par le système pour démarrer le service. systemd passe passe directement par le binaire /usr/sbin/sshd (tu remarqueras que pourtant le paquet openssh-server fournit bien un script init.d mais celui-ci n'est donc pas utilisé). Maintenant, prends par exemple le service MySQL : ~# systemctl show mysql.service | grep FragmentPath FragmentPath=/run/systemd/generator.late/mysql.service Le fichier unité n'est pas dans /lib/systemd mais dans /run car c'est un fichier qui est généré (par systemd je pense) au moment du démarrage du système. Si tu regardes ce fichier, tu verras : ExecStart=/etc/init.d/mysql start ExecStop=/etc/init.d/mysql stop Là, on peut constater que le script init.d est bel et bien utilisé par systemd pour lancer le service MySQL. C'est comme ça, si j'ai bien compris, que systemd gère les services qui ne démarrent qu'avec des scripts sysvinit. Et cette gestion est d'ailleurs un peu tordue car j'ai cru comprendre qu'ensuite le script init.d, via des inclusions de libs, fait lui-même appel à son tour à systemd. Bref, ça semble super sioux et d'après ce que je comprends ce n'est pas le cas idéal. Si c'est possible, c'est bien mieux que systemd puisse démarrer un service via le binaire directement (et avec un binaire qui ne forke pas, ie qui ne rend pas la main). > Et j'ai quand même l'impression que beaucoup de paquets n'y sont pas encore > passés (backuppc, etc.). C'est mon impression également. Par exemple, MySQL et Apache2 (c'est pas n'importe quoi comme services) passent encore par une script init.d sous Jessie. Après, j'imagine que c'est pas toujours simple de passer le service à un démarrage via systemd. J'imagine que ça se fera avec le temps. Par contre, ce que je pense, c'est que si toi tu veux te créer un petit service sous Jessie, tu as tout intérêt à le faire sans passer par un script init.d et en utilisant un fichier unité systemd. C'est vraiment nettement plus simple (cf mon message précédent) et en plus je pense que ton service sera (nettement) mieux géré par systemd dans ce cas là que si systemd doit gérer ton script init.d. -- François Lafont

