Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

astuces:utiliser_un_script_sysvinit_avec_systemd [Le 27/10/2019 à 12:11] (Version actuelle)
minzord
Ligne 1: Ligne 1:
 +====== Utiliser un script SysVinit avec systemd ======
  
 +
 +===== Intro =====
 +
 +
 +Systemd sera [[http://www.debian.org/News/weekly/2014/04/#systemd|le système d'init]] de la future version stable de Debian (uniquement pour les architectures utilisant un noyau Linux). Une présentation en français de systemd est disponible [[https://linuxfr.org/news/%C3%A9volutions-techniques-de-systemd|sur le site de linuxFr]]. 
 +
 +Pour lancer et encadrer les services, systemd utilise des fichiers **.service** qui décrivent les conditions et contraintes à appliquer à chaque service. Cela signifie que les scripts du répertoire **/etc/init.d/** ne sont plus pris en considération.
 +
 +Peut-être avez-vous passé beaucoup de temps à écrire et tester vos scripts d'init personnels ? Ils fonctionnent parfaitement, et vous ne souhaitez pas apprendre la syntaxe de systemd pour recommencer tout votre travail ? Rassurez-vous, systemd peut parfaitement utiliser un script d'init pour lancer et encadrer un service. Voici comment.
 +
 +
 +===== Cas pratique : le script /etc/init.d/machin.sh =====
 +On souhaite réutiliser le script **/etc/init.d/machin.sh**. On souhaite également que les logs de ce service soient dirigés vers le traditionnel syslog-ng, ce qui permettra d'avoir des logs au format texte.
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +===== Gestion des logs avec syslog-ng =====
 +
 +Systemd fournit son propre utilitaire pour lire et filtrer les logs, il s'agit de la commande [[http://0pointer.de/blog/projects/journalctl.html|journalctl]].
 +
 +
 +Si vous préférez les logs traditionnels gérés par syslog-ng, installez syslog-ng sur votre machine, puis faites :
 +  $ systemctl enable syslog-ng.service
 +//Note : Pour une raison que j'ignore, le socket de syslog-ng nécessite le fichier syslog.service, qui est créé par la commande ci-dessus. De plus, cette commande active le lancement automatique de syslog-ng au démarrage de l'ordinateur.//
 +
 +
 +===== Réutiliser notre script machin.sh =====
 +
 +
 +Pour indiquer à systemd d'utiliser le script **machin.sh**, il nous faut un fichier **.service** adéquat. On se rend dans le répertoire **/etc/systemd/system/** pour y créer le fichier **machin.service** qui contient ceci :
 +
 +#########################################
 +
 +**[Unit]**\\
 +[[http://www.freedesktop.org/software/systemd/man/systemd.unit.html#Description=|Description=]]Mon service machin qui fait des bidules\\
 +[[http://www.freedesktop.org/software/systemd/man/systemd.unit.html#Wants=|Wants=]]syslog-ng.service
 +
 +**[Service]**\\
 +[[http://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=|ExecStart=]]/etc/init.d/machin.sh start\\
 +[[http://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStop=|ExecStop=]]/etc/init.d/machin.sh stop\\
 +[[http://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=|Type=]]forking\\
 +[[http://www.freedesktop.org/software/systemd/man/systemd.service.html#PIDFile=|PIDFile=]]/var/run/machin.pid\\
 +[[http://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardOutput=|StandardOutput=]]syslog\\
 +[[http://www.freedesktop.org/software/systemd/man/systemd.exec.html#StandardError=|StandardError=]]syslog\\
 +[[http://www.freedesktop.org/software/systemd/man/systemd.exec.html#SyslogIdentifier=|SyslogIdentifier=]]carabistouille\\
 +
 +**[Install]**\\
 +[[http://www.freedesktop.org/software/systemd/man/systemd.unit.html#WantedBy=|WantedBy=]]multi-user.target
 +
 +#########################################
 +
 +Pour en savoir plus pour chaque option, cliquez dessus. L'option **PIDFile** est facultative, systemd lit le fichier indiqué (systemd n'écrit pas dedans).
 +
 +Pour que notre nouveau fichier **machin.service** soit pris en considération par systemd, faites :
 +  $ systemctl --system daemon-reload
 +
 +//Note : En root, le « - -system » est facultatif.//
 +
 +Enfin, on lance notre service machin :
 +  $ systemctl start machin.service
 +
 +//Note : Grâce au paramètre « Wants=syslog-ng.service », le lancement de **machin.service** déclenche le lancement de syslog-ng.//
 +
 +Les logs de notre service seront récupérés par syslog, et lisibles dans les fichiers //textes// suivant :
 +  * /var/log/messages.log
 +  * /var/log/everything.log
 +  * /var/log/daemon.log
 +
 +
 +En plus de la consultation des logs, on peut vérifier que tout va bien avec la commande **systemctl status** :
 +  $ systemctl status machin.service
 +
 +
 +Pour arrêter le service, on fait :
 +  $ systemctl stop machin.service
 +
 +Et pour lancer automatiquement le service au démarrage (plus exactement : le service sera lancé dès que [[http://wiki.archlinux.fr/Systemd#Target|la cible]] **multi-user.target** est atteinte) :
 +  $ systemctl enable machin.service
 +
 +
 +Enfin, [[http://www.freedesktop.org/software/systemd/man/systemctl.html#Unit%20Commands|quelques autres commandes]] pour interagir avec le service.
 +
 +===== Licence de ce tutoriel =====
 +Ce tutoriel est publié sous la licence [[http://www.wtfpl.net/|« Do What the Fuck You Want to Public License »]].
 +
 +[[http://www.wtfpl.net|{{ :logo_wtfpl.png | Logo « Do What the Fuck You Want to Public License »}}]]
 
astuces/utiliser_un_script_sysvinit_avec_systemd.txt · Dernière modification: Le 27/10/2019 à 12:11 par minzord     Haut de page
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Design by Chirripó