Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Ceci est une ancienne révision du document !


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 :

VariableValeurCommentaire
DESCmon programmedescription
NAMEmonprogrammenom du service dans /usr/bin
DAEMON/usr/bin/$NAMEmonprogramme 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

Autres étapes

Conclusion

Problèmes connus

Voir aussi


Contributeurs principaux : Jamaique.

1)
nécessaire pour pouvoir l'arrêter