Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tutoriel:comment_transformer_un_programme_en_service [Le 15/12/2011, 15:17] – modification externe 127.0.0.1 | tutoriel:comment_transformer_un_programme_en_service [Le 31/05/2023, 13:18] (Version actuelle) – retour en arrière (pardon) 92.88.170.183 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag>Dapper Jaunty Lucid serveur logiciels services}} | + | {{tag>tutoriel Precise |
| + | ---- | ||
| - | ====== 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' |
| - | Qu' | + | ===== Pourquoi |
| - | [Unix] Originellement DAEMON, Brit. pour « Disk And Execution MONitor ». Programme réalisant des tâches de fond du système, sous Unix. Appelé aussi driver sur d' | + | 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çus, voire dangereux pour le système en cas de mauvaise utilisation. |
| - | + | ||
| - | ===== 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çûs, voire dangereux pour le système en cas de mauvaise utilisation. | + | |
| ===== Mise en place ===== | ===== Mise en place ===== | ||
| - | Il faut d' | + | Il faut d' |
| - | Pour cela, on lance son éditeur favori, soit [[../nano]] ou [[../vim]] en ligne de commande, soit [[../ | + | Il faudra ensuite rendre ce [[: |
| ==== Script ==== | ==== Script ==== | ||
| - | On utilise proprement start-stop-daemon qui permet de deamonizé | + | On utilise proprement |
| - | Exemple pour SABnzbd : | + | <note important> |
| - | <note important> | + | Voici un exemple pour **SABnzbd** : |
| - | < | + | < |
| - | #! /bin/sh -e | + | #!/bin/sh -e |
| + | # | ||
| + | ### BEGIN INIT INFO | ||
| + | # Provides: | ||
| + | # Required-Start: | ||
| + | # Required-Stop: | ||
| + | # Default-Start: | ||
| + | # Default-Stop: | ||
| + | # Short-Description: | ||
| + | ### END INIT INFO | ||
| - | DAEMON="/ | + | DAEMON="/ |
| - | DEAMON_OPT="-d -p -f /home/jfb/ | + | daemon_OPT="-d -p -f /home/Utilisateur/ |
| DAEMONUSER=" | DAEMONUSER=" | ||
| - | DEAMON_NAME=" | + | daemon_NAME=" |
| + | #Attention le script est un script bash, le script ne portera donc pas l' | ||
| PATH="/ | PATH="/ | ||
| Ligne 44: | Ligne 51: | ||
| d_start () { | d_start () { | ||
| - | log_daemon_msg " | + | log_daemon_msg " |
| - | start-stop-daemon --background --name $DEAMON_NAME | + | start-stop-daemon --background --name $daemon_NAME |
| log_end_msg $? | log_end_msg $? | ||
| } | } | ||
| d_stop () { | d_stop () { | ||
| - | log_daemon_msg " | + | log_daemon_msg " |
| - | start-stop-daemon --name $DEAMON_NAME | + | start-stop-daemon --name $daemon_NAME |
| log_end_msg $? | log_end_msg $? | ||
| } | } | ||
| Ligne 68: | Ligne 75: | ||
| force-stop) | force-stop) | ||
| | | ||
| - | killall -q $DEAMON_NAME | + | killall -q $daemon_NAME |
| sleep 2 | sleep 2 | ||
| - | killall -q -9 $DEAMON_NAME | + | killall -q -9 $daemon_NAME |
| ;; | ;; | ||
| status) | status) | ||
| - | status_of_proc "$DEAMON_NAME" " | + | status_of_proc "$daemon_NAME" " |
| ;; | ;; | ||
| *) | *) | ||
| - | echo " | + | echo " |
| exit 1 | exit 1 | ||
| ;; | ;; | ||
| Ligne 84: | Ligne 91: | ||
| </ | </ | ||
| - | Maintenant on sauvegarde le fichier dans son répertoire home "/home/user/sabnzbd" | + | 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' |
| - | Maintenant on va le déplacer dans / | + | < |
| + | sudo cp ~/ | ||
| + | sudo chmod 0755 / | ||
| + | </ | ||
| - | <file> | + | On reload les daemons du système : |
| - | sudo cp / | + | <code> |
| - | sudo chmod 0755 / | + | systemctl daemon-reload |
| - | </file> | + | </code> |
| On teste notre script : | On teste notre script : | ||
| - | <file> | + | <code> |
| sudo / | sudo / | ||
| * Starting system SABnzbd Daemon | * Starting system SABnzbd Daemon | ||
| Ligne 101: | Ligne 111: | ||
| sudo / | sudo / | ||
| * Stopping system SABnzbd Daemon | * Stopping system SABnzbd Daemon | ||
| - | </file> | + | </code> |
| Maintenant on ajoute le service au démarrage de l' | Maintenant on ajoute le service au démarrage de l' | ||
| - | <file> | + | <code> |
| sudo update-rc.d sabnzbd defaults | sudo update-rc.d sabnzbd defaults | ||
| Ligne 117: | Ligne 127: | ||
| / | / | ||
| - | </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: | ||
| / | / | ||
| / | / | ||
| - | </file> | + | </code> |
| - | Voila, votre programme fonctionne en tant que deamon | + | Voila, votre programme fonctionne en tant que daemon |
| + | |||
| + | ---- | ||
| ===== Documentation supplémentaire | ===== Documentation supplémentaire | ||
| - | http:// | + | * [[man>start-stop-daemon]] de Ian Jackson |
| - | + | * [[man> | |
| - | http://manpages.ubuntu.com/manpages/gutsy/ | + | * [[wpfr> |
| - | + | * http://jargonf.org/wiki/d%C3%A9mon | |
| - | http://www.linux-france.org/prj/jargonf/ | + | * https://www.linuxtricks.fr/wiki/systemd-les-commandes-essentielles |
| ---- | ---- | ||
| // | // | ||
