Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
utilisateurs:stepho:creer_un_service_avec_systemd [Le 12/01/2016, 13:14]
stepho Livrée : https://doc.ubuntu-fr.org/creer_un_service_avec_systemd
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​Vivid Wily tutoriel systemd service BROUILLON}} 
----- 
  
-====== Créer un nouveau service avec Systemd ====== 
-Ce tutoriel décrit la démarche à suivre pour transformer un programme en un service Systemd pouvant être lancé automatiquement au démarrage du système. 
- 
-Pour notre exemple, nous allons créer un service pour lancer le daemon [[:Deluge]] au démarrage (''​deluged''​),​ mais cela peut s'​appliquer à n'​importe quel programme. 
- 
-===== Contexte ===== 
-[[:​Systemd]] ([[https://​fr.wikipedia.org/​wiki/​Systemd|Wikipedia]]) remplace [[:​script_sysv|System V]] ([[https://​fr.wikipedia.org/​wiki/​UNIX_System_V|Wikipedia]]) et [[:​Upstart]] en tant que système d'​initialisation par défaut dans Ubuntu depuis la version 15.04 [[:Vivid]], et depuis la version 8 dans [[https://​www.debian.org/​|Debian]] (Jessie). 
- 
-===== Pré-requis ===== 
-  * Disposer des [[:​sudo|droits d'​administration]] 
-  * Savoir utiliser le [[:​terminal]] 
- 
-===== Création d'un script d'​encapsulation du programme ===== 
-Deluged ne gère pas les paramètres d'​arrêt ou de relance, nous devons donc créer un script qui s'en chargera. 
-On pourra stocker ce script dans ''/​usr/​local/​bin''​. 
- 
-<​note>​Le script présenté ici peut être largement amélioré, notamment dans la gestion des erreurs.</​note>​ 
- 
-<​code>​sudo cat >/​usr/​local/​bin/​deluge.sh</​code>​ 
-Puis collez le code ci-dessous (<​CTRL>​+<​D>​ pour finir). 
-<​code>​ 
-#!/bin/bash 
-# /​usr/​local/​bin/​deluge.sh 
-# 
- 
-function d_start() 
-{ 
- echo "​Deluge : starting service"​ 
- deluged --pidfile=/​tmp/​deluge.pid 
- sleep 5 
- echo "PID is $(cat /​tmp/​deluge.pid)"​ 
-} 
- 
-function d_stop() 
-{ 
- echo "​Deluge : stopping service (PID=$(cat /​tmp/​deluge.pid))"​ 
- kill $(cat /​tmp/​deluge.pid) 
- rm /​tmp/​deluge.pid 
-} 
- 
-function d_status() 
-{ 
- ps -ef | grep deluged | grep -v grep 
- echo "PID file indicate $(cat /​tmp/​deluge.pid 2>/​dev/​null)"​ 
-} 
- 
-# Some things that run always 
-touch /​var/​lock/​deluge 
- 
-# Gestion des instructions du service 
-case "​$1"​ in 
- start) 
- d_start 
- ;; 
- stop) 
- d_stop 
- ;; 
- reload) 
- d_stop 
- sleep 1 
- d_start 
- ;; 
- status) 
- d_status 
- ;; 
- *) 
- echo "​Usage:​ $0 {start|stop|reload|status}"​ 
- exit 1 
- ;; 
-esac 
- 
-exit 0 
-</​code>​ 
- 
-===== Création du fichier de service ===== 
-Dans Systemd , les services sont définis dans des fichiers ''​.service'',​ situé dans ''/​etc/​systemd/​system/''​. 
- 
-Créons un fichier de service pour notre programme :  
-<​code>​sudo cat >/​etc/​systemd/​system/​deluge.service</​code>​ 
-Puis collez le code ci-dessous (<​CTRL>​+<​D>​ pour finir). 
-<​code>​ 
-[Unit] 
-Description=Deluge daemon 
-After=network.target auditd.service 
- 
-[Service] 
-Type=forking 
-ExecStart=/​usr/​local/​bin/​deluge.sh start 
-ExecStop=/​usr/​local/​bin/​deluge.sh stop 
-ExecReload=/​usr/​local/​bin/​deluge.sh reload 
- 
-[Install] 
-WantedBy=multi-user.target 
-</​code>​ 
- 
-===== Installation du service ===== 
-Il faut maintenant recharge la liste des services : 
-<​code>​sudo systemctl daemon-reload</​code>​ 
-Puis activer le lancement du service au démarrage : 
-<​code>​sudo systemctl daemon-reload</​code>​ 
- 
-===== Principales commandes de gestion des services===== 
-Pour mémoire, les commandes suivantes permettent de gérer le service : 
- 
-<​code>​sudo systemctl <​commande>​ <​service></​code>​ 
-(dans notre exemple, ''<​service>''​=''​deluge''​) 
- 
-^ Commande ^ Description ^ 
-|start|Démarrer le service| 
-|stop|Arrêter le service| 
-|status|État du service| 
-|is-enabled|Indique si le service est activé au démarrage| 
-|enable|Active le service au démarrage| 
-|disable|Désactive le service au démarrage| 
- 
-===== Conclusion ===== 
-<note important>​Attention,​ les services sont lancé par ''​root'',​ donc si vous aviez déjà configuré le programme avec un autre utilisateur,​ il faudra : 
-  * soit recopier la configuration pour ''​root'',​ 
-  * soit faire pointer le service vers la bonne configuration (pour ''​deluged'',​ il y a une option ''​--config''​) 
-</​note>​ 
- 
-Voilà, il ne reste qu'à terter que tout fonctionne en lançant le service: 
-<​code>​sudo systemctl start deluge</​code>​ 
- 
-Si tout fonctionne on peut redémarrer la machine pour vérifier que le service se lance automatiquement:​ 
-<​code>​sudo reboot</​code>​ 
- 
-===== Voir aussi ===== 
-  * [[http://​www.freedesktop.org/​wiki/​Software/​systemd/​|Site officiel de Systemd]] 
-  * [[https://​wiki.debian.org/​fr/​systemd|Description de Systemd (Debian)]] 
-  * [[https://​access.redhat.com/​documentation/​en-US/​Red_Hat_Enterprise_Linux/​7/​html/​System_Administrators_Guide/​chap-Managing_Services_with_systemd.html|Administration des services avec Systemd (RedHat)]] 
----- 
-//​Contributeurs principaux : [[:​utilisateurs:​stepho]].//​