Différences
Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
utiliser_un_script_sysvinit_avec_systemd [Le 27/10/2019 à 12:11] minzord Déplacement de Utiliser un script SysVinit avec systemd dans astuce |
— (Version actuelle) | ||
---|---|---|---|
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 »}}]] |