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 27/05/2016, 00:06] – [Script] beaver -> 185.86.148.211 | tutoriel:comment_transformer_un_programme_en_service [Le 23/07/2019, 19:14] (Version actuelle) – 86.253.211.108 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | ====== Comment transformer un programme en service ====== | ||
+ | |||
+ | ===== Définition ===== | ||
+ | |||
+ | 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' | ||
+ | |||
+ | ===== 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çus, voire dangereux pour le système en cas de mauvaise utilisation. | ||
+ | |||
+ | ===== Mise en place ===== | ||
+ | |||
+ | Il faut d' | ||
+ | |||
+ | Il faudra ensuite rendre ce [[: | ||
+ | |||
+ | ==== Script ==== | ||
+ | |||
+ | On utilise proprement '' | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | Voici un exemple pour **SABnzbd** : | ||
+ | |||
+ | <file bash SABnzbd.sh> | ||
+ | #!/bin/sh -e | ||
+ | # | ||
+ | ### BEGIN INIT INFO | ||
+ | # Provides: | ||
+ | # Required-Start: | ||
+ | # Required-Stop: | ||
+ | # Default-Start: | ||
+ | # Default-Stop: | ||
+ | # Short-Description: | ||
+ | ### END INIT INFO | ||
+ | |||
+ | DAEMON="/ | ||
+ | daemon_OPT=" | ||
+ | DAEMONUSER=" | ||
+ | daemon_NAME=" | ||
+ | #Attention le script est un script bash, le script ne portera donc pas l' | ||
+ | |||
+ | PATH="/ | ||
+ | |||
+ | test -x $DAEMON || exit 0 | ||
+ | |||
+ | . / | ||
+ | |||
+ | d_start () { | ||
+ | log_daemon_msg " | ||
+ | start-stop-daemon --background --name $daemon_NAME --start --quiet --chuid $DAEMONUSER --exec $DAEMON -- $daemon_OPT | ||
+ | log_end_msg $? | ||
+ | } | ||
+ | |||
+ | d_stop () { | ||
+ | log_daemon_msg " | ||
+ | start-stop-daemon --name $daemon_NAME --stop --retry 5 --quiet --name $daemon_NAME | ||
+ | log_end_msg $? | ||
+ | } | ||
+ | |||
+ | case " | ||
+ | |||
+ | start|stop) | ||
+ | d_${1} | ||
+ | ;; | ||
+ | |||
+ | restart|reload|force-reload) | ||
+ | d_stop | ||
+ | d_start | ||
+ | ;; | ||
+ | |||
+ | force-stop) | ||
+ | | ||
+ | killall -q $daemon_NAME || true | ||
+ | sleep 2 | ||
+ | killall -q -9 $daemon_NAME || true | ||
+ | ;; | ||
+ | |||
+ | status) | ||
+ | status_of_proc " | ||
+ | ;; | ||
+ | *) | ||
+ | echo " | ||
+ | exit 1 | ||
+ | ;; | ||
+ | esac | ||
+ | exit 0 | ||
+ | </ | ||
+ | |||
+ | Maintenant on sauvegarde le fichier dans son **Dossier Personnel/ | ||
+ | |||
+ | < | ||
+ | sudo cp ~/sabnzbd / | ||
+ | sudo chmod 0755 / | ||
+ | </ | ||
+ | |||
+ | On reload les daemons du système : | ||
+ | < | ||
+ | systemctl daemon-reload | ||
+ | </ | ||
+ | |||
+ | On teste notre script : | ||
+ | |||
+ | < | ||
+ | sudo / | ||
+ | * Starting system SABnzbd Daemon | ||
+ | |||
+ | sudo / | ||
+ | * Stopping system SABnzbd Daemon | ||
+ | </ | ||
+ | |||
+ | Maintenant on ajoute le service au démarrage de l' | ||
+ | |||
+ | < | ||
+ | sudo update-rc.d sabnzbd defaults | ||
+ | |||
+ | | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | |||
+ | </ | ||
+ | |||
+ | Pour le retirer : | ||
+ | |||
+ | < | ||
+ | sudo update-rc.d -f sabnzbd remove | ||
+ | |||
+ | | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | Voila, votre programme fonctionne en tant que daemon et sera lancé automatique au démarrage de l' | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Documentation supplémentaire | ||
+ | |||
+ | * [[man> | ||
+ | * [[man> | ||
+ | * [[wpfr> | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | ---- | ||
+ | // |