Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tutoriel:comment_transformer_un_programme_en_service [Le 01/10/2009, 17:42]
RedLemon créée
tutoriel:comment_transformer_un_programme_en_service [Le 31/05/2023, 13:18] (Version actuelle)
92.88.170.183 retour en arrière (pardon)
Ligne 1: Ligne 1:
-{{tag>breezy dapper edgy jaunty ​serveur ​daemon démon service}}+{{tag>tutoriel Precise ​serveur ​logiciels services}} 
 +----
  
-====== Comment transformer un programme en service======+====== Comment transformer un programme en service ======
  
 ===== Définition ===== ===== Définition =====
  
-Service est traduit en anglais par daemon. +Service est traduit en anglais par daemon. Originellement ​**DAEMON** pour « Disk And Execution MONitor » est un programme ​réalisant des tâches de fond du système sous Unix. Appelé aussi driver sur d'​autres ​systèmes. En temps normal, son fonctionnement ne doit pas être remarqué par l'​utilisateur. Un démon peut aussi être un sous-programme appelé par un programme principal (dans ce cas on parle « sérieusement » de bibliothèque partagée).
- +
-Qu'est un daemon : +
- +
-[Unix] ​Originellement DAEMON, Brit. pour « Disk and Execution MONitor ». Programme ​réalisant des tâches de fond du systèmesous Unix. Appelé aussi driver sur d'​autres ​système. En temps normal, son fonctionnement ne doit pas être remarqué par l'​utilisateur. Un démon peut aussi être un sous-programme appelé par un programme principal (dans ce cas on parle « sérieusement » de DLL)+
  
-===== Pourquoi ce tutoriel=====+===== Pourquoi ce tutoriel =====
  
-Il est parfois nécessaire de transformer un programme en daemon, surtout lors de mise en place de serveur. Par exemple, les serveurs de jeux, ou des programmes de téléchargement automatique tel que SABnzbd. Le problème est que les scripts pour « daemonizer » que l'on trouve sur internet, sont mal conçûsvoir dangereux pour le système en cas de mauvaise utilisation.+Il est parfois nécessaire de transformer un programme en daemon, surtout lors de mise en place de serveur. Par exemple, les serveurs de jeux, ou des programmes de téléchargement automatique tel que **SABnzbd**. Le problème est que les scripts pour « daemonizer » que l'on trouve sur internet, sont mal conçusvoire dangereux pour le système en cas de mauvaise utilisation.
  
 ===== Mise en place ===== ===== Mise en place =====
  
-Il faut d'​abord ​créé ​un script sh que nous appellerons dans notre exemple SABnzbd.py. Le nom ici donnée ​est tous a fait arbitraire. Généralement,​ par facilité, on préférera lui donner le même nom que le programme que l'on va démonizer.+Il faut d'​abord ​[[:​tutoriel:​comment_modifier_un_fichier|créer]] ​un script ​**sh** que nous appellerons dans notre exemple ​**SABnzbd.sh**. Le nom ici donné ​est tout à fait arbitraire. Généralement,​ par facilité, on préférera lui donner le même nom que le programme que l'on va transformer en démon.
  
-Pour cela, on lance son éditeur favori, soit [[nano]] en ligne de commande, soit [[gedit]],​[[kate]] ou [[mousepad]].+Il faudra ensuite rendre ce [[:​tutoriel:​script_shell|programme]] **SABnzbd.sh** ​[[:​permissions|programme exécutable]].<
  
 ==== Script ==== ==== Script ====
  
-On utilise proprement start-stop-daemon qui permet de deamonizé ​n'​importe quel programme. +On utilise proprement ​''​start-stop-daemon'' ​qui permet de transformer ​n'​importe quel programme ​en démon.
- +
-Exemple pour SABnzbd :+
  
 <note important>​Configurer correctement l'​entête du script en fonction de votre utilisation!</​note>​ <note important>​Configurer correctement l'​entête du script en fonction de votre utilisation!</​note>​
  
-<​file>​ +Voici un exemple pour **SABnzbd** : 
-#! /bin/sh -e+ 
 +<​file ​bash SABnzbd.sh
 +#!/bin/sh -e 
 +
 +### BEGIN INIT INFO 
 +# Provides: ​         SABnzbd 
 +# Required-Start: ​   $all 
 +# Required-Stop:​ 
 +# Default-Start: ​    2 3 4 5 
 +# Default-Stop: ​     0 1 6 
 +# Short-Description:​ description du programme 
 +### END INIT INFO
  
-DAEMON="/​opt/​SABnzbd-0.4.11/​SABnzbd.py"​ #ligne de commande du programme +DAEMON="/​opt/​SABnzbd-0.4.11/​SABnzbd.py"​ #ligne de commande du programme, attention à l'​extension .py. 
-DEAMON_OPT="-d -p -f /home/jfb/​SABnzbd/​sabnzbd.ini" ​ #arguement ​à utilisé ​par le programme+daemon_OPT="-d -p -f /home/Utilisateur/​SABnzbd/​sabnzbd.ini" ​ #argument ​à utiliser ​par le programme ​- Remplacer Utilisateur par votre nom de login
 DAEMONUSER="​user"​ #​utilisateur du programme DAEMONUSER="​user"​ #​utilisateur du programme
-DEAMON_NAME« SABnzbd.py ​» #Nom du programme (doit etre identique à l'​exécutable)+daemon_NAME="SABnzbd.py" ​#Nom du programme (doit être identique à l'​exécutable)
 +#Attention le script est un script bash, le script ne portera donc pas l'​extension .py mais .sh.
  
 PATH="/​sbin:/​bin:/​usr/​sbin:/​usr/​bin"​ #Ne pas toucher PATH="/​sbin:/​bin:/​usr/​sbin:/​usr/​bin"​ #Ne pas toucher
Ligne 44: Ligne 51:
  
 d_start () { d_start () {
-        log_daemon_msg "​Starting system $DEAMON_NAME ​Daemon"​ +        log_daemon_msg "​Starting system $daemon_NAME ​Daemon"​ 
- start-stop-daemon --background --name $DEAMON_NAME ​--start --quiet --user $DAEMONUSER --exec $DAEMON -- $DEAMON_OPT+ start-stop-daemon --background --name $daemon_NAME ​--start --quiet --chuid $DAEMONUSER --exec $DAEMON -- $daemon_OPT
         log_end_msg $?         log_end_msg $?
 } }
  
 d_stop () { d_stop () {
-        log_daemon_msg "​Stopping system $DEAMON_NAME ​Daemon"​ +        log_daemon_msg "​Stopping system $daemon_NAME ​Daemon"​ 
-        start-stop-daemon --name $DEAMON_NAME ​--stop --retry 5 --quiet --name $DEAMON_NAME+        start-stop-daemon --name $daemon_NAME ​--stop --retry 5 --quiet --name $daemon_NAME
  log_end_msg $?  log_end_msg $?
 } }
Ligne 68: Ligne 75:
         force-stop)         force-stop)
                ​d_stop                ​d_stop
-                killall -q $DEAMON_NAME ​|| true+                killall -q $daemon_NAME ​|| true
                 sleep 2                 sleep 2
-                killall -q -9 $DEAMON_NAME ​|| true+                killall -q -9 $daemon_NAME ​|| true
                 ;;                 ;;
  
         status)         status)
-                status_of_proc "$DEAMON_NAME" "​$DAEMON"​ "​system-wide $DEAMON_NAME" && exit 0 || exit $?+                status_of_proc "$daemon_NAME" "​$DAEMON"​ "​system-wide $daemon_NAME" && exit 0 || exit $?
                 ;;                 ;;
         *)         *)
-                echo "​Usage:​ /​etc/​init.d/​$DEAMON_NAME ​{start|stop|force-stop|restart|reload|force-reload|status}"​+                echo "​Usage:​ /​etc/​init.d/​$daemon_NAME ​{start|stop|force-stop|restart|reload|force-reload|status}"​
                 exit 1                 exit 1
                 ;;                 ;;
Ligne 84: Ligne 91:
 </​file>​ </​file>​
  
-Maintenant on sauvegarde le fichier dans son répertoire home "/home/user/SABnzbd.py".+Maintenant on sauvegarde le fichier dans son **Dossier Personnel/sabnzbd**, ensuite on va le déplacer dans /etc/init.d et lui donner les bons droits d'​exécution.
  
-Maintenant on va le déplacer dans /​etc/​init.d ​et lui donner les bons droits d'​exécution.+<​code>​ 
 +sudo cp ~/​sabnzbd ​/etc/init.d/. 
 +sudo chmod 0755 /​etc/​init.d/​sabnzbd 
 +</​code>​
  
-<file+On reload les daemons du système : 
-sudo cp /​user/​home/​SABnzbd.py /​etc/​init.d/​. +<code
-sudo chmod 0755 /​user/​home/​SABnzbd.py +systemctl daemon-reload 
-</file>+</code>
  
 On teste notre script : On teste notre script :
  
-<file>+<code>
 sudo /​etc/​init.d/​sabnzbd start sudo /​etc/​init.d/​sabnzbd start
 * Starting system SABnzbd Daemon ​ * Starting system SABnzbd Daemon ​
Ligne 101: Ligne 111:
 sudo /​etc/​init.d/​sabnzbd stop sudo /​etc/​init.d/​sabnzbd stop
 * Stopping system SABnzbd Daemon  ​ * Stopping system SABnzbd Daemon  ​
-</file>+</code>
  
 Maintenant on ajoute le service au démarrage de l'​ordinateur : Maintenant on ajoute le service au démarrage de l'​ordinateur :
  
-<file>+<code>
 sudo update-rc.d sabnzbd defaults sudo update-rc.d sabnzbd defaults
  
Ligne 117: Ligne 127:
    /​etc/​rc5.d/​S20sabnzbd -> ../​init.d/​sabnzbd    /​etc/​rc5.d/​S20sabnzbd -> ../​init.d/​sabnzbd
  
-</file>+</code>
  
 Pour le retirer : Pour le retirer :
  
-<file>+<code>
 sudo update-rc.d -f sabnzbd remove sudo update-rc.d -f sabnzbd remove
  
Ligne 132: Ligne 142:
    /​etc/​rc5.d/​S20sabnzbd    /​etc/​rc5.d/​S20sabnzbd
    /​etc/​rc6.d/​K20sabnzbd    /​etc/​rc6.d/​K20sabnzbd
-</file>+</code>
  
-Voila, votre programme fonctionne en tant que deamon ​et sera lancé automatique au démarrage de l'​ordinateur.+Voila, votre programme fonctionne en tant que daemon ​et sera lancé automatique au démarrage de l'​ordinateur. 
 + 
 +----
  
 ===== Documentation supplémentaire ​ et liens ===== ===== Documentation supplémentaire ​ et liens =====
  
-http://​www.delafond.org/​traducmanfr/​deb/​man8/​start-stop-daemon.8.html ​de Ian Jackson +  * [[man>start-stop-daemon]] de Ian Jackson 
- +  * [[man>​update-rc.d]] 
-http://manpages.ubuntu.com/manpages/gutsy/​fr/​man8/​update-rc.d.8.html +  * [[wpfr>​Daemon_(informatique)]] 
- +  * http://jargonf.org/wiki/d%C3%A9mon 
-http://www.linux-france.org/prj/jargonf/​D/​deacmon.html+  * https://www.linuxtricks.fr/wiki/systemd-les-commandes-essentielles
  
 ---- ----
-//​Contributeurs : Rédigée et maintenue par [[utilisateurs/​RedLemon]]//​+//​Contributeurs : Rédigée et maintenue par [[:utilisateurs/​RedLemon]]//​
  • tutoriel/comment_transformer_un_programme_en_service.1254411749.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)