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

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 »}}]] 
 
    Haut de page
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Design by Chirripó