Table des matières
Démarrer un programme en tant que service (DAEMON)
Ce tutoriel décrit la démarche à suivre pour qu'un programme démarre en tant que service.
Il faut pour cela créer un lanceur dans /etc/init.d.
Pour un démarrage automatique, il faut l’ajouter comme service au démarrage de Linux.
Pré-requis
Première étape : créer le lanceur
<term monprogramme>nom du service à créer</term>
Pour créer un lanceur dans /etc/init.d, le plus simple est de partir du modèle fourni /etc/init.d/skeleton.
Copiez le fichier /etc/init.d/skeleton fourni comme modèle :
sudo cp /etc/init.d/skeleton /etc/init.d/monprogramme
Ouvrez avec les droits d'administration le fichier /etc/init.d/monprogramme et repérez les lignes suivantes:
PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="Description of the service" NAME=daemonexecutablename DAEMON=/usr/sbin/$NAME DAEMON_ARGS="--options args" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME
Renseignez ce qui concerne monprogramme :
Variable | Valeur | Commentaire |
---|---|---|
DESC | mon programme | description |
NAME | monprogramme | nom du service dans /usr/bin |
DAEMON | /usr/bin/$NAME | monprogramme se trouve dans /usr/bin et non dans /usr/sbin |
DAEMON_ARGS | ““ | arguments pour lancer monprogramme |
Ce qui donne:
PATH=/usr/sbin:/usr/bin:/sbin:/bin DESC="Programme de ..." NAME=monprogramme DAEMON=/usr/bin/$NAME DAEMON_ARGS="" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME
Pour que le programme crée un fichier .pid 1), ajoutez l'option –make-pidfile (ou -m) dans les deux lignes commençant par start-stop-daemon –start… de la procédure do_start()
Ce qui donne dans /etc/init.d/monprogramme :
# # Function that starts the daemon/service # do_start() { start-stop-daemon --start --quiet --m --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --m --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS \ || return 2 [...] }
Pour plus de détails, voir la page Résumé de la page de man de start-stop-daemon
Rendez le script exécutable :
sudo chmod +x /etc/init.d/vncserver
et activez-le :
sudo update-rc.d vncserver defaults