Outils pour utilisateurs

Outils du site


tuto:linux:lancer_des_services_avec_start-stop-daemon

Table des matières

DEMONS

NOM

start-stop-daemon - lance ou arrête des démons-systèmes

SYNOPSIS

start-stop-daemon -S|--start options [--] arguments

start-stop-daemon -K|--stop options
start-stop-daemon -H|--help
start-stop-daemon -V|--version

DESCRIPTION

On se sert de start-stop-daemon pour contrôler la création ou l'arrêt de processus-systèmes. On peut configurer start-stop-daemon avec les options –exec, –pidfile, –user, et –name, pour trouver les exemplaires présents d'un processus en fonctionnement.

Avec l'action –start, start-stop-daemon vérifie l'existence d'un processus particulier. Quand existe un tel processus, start-stop-daemon ne fait rien et se termine avec un code d'erreur égal à 1 (0 si –oknodo est précisé). Quand un tel processus n'existe pas, un exemplaire de l'exécutable est lancé avec –exec, (ou, si c'est précisé, avec –startas). Tout argument donné après – sur la ligne de commande est passé tel quel au programme qui doit être lancé. Si –retry est indiqué, start-stop-daemon vérifie que le (ou les) processus s'est terminé.

Avec l'action –stop, start-stop-daemon vérifie aussi l'existence d'un processus particulier. Quand un tel processus existe start-stop-daemon lui envoie le signal précisé avec –signal, et se termine avec un code d'erreur égal à 0. Quand un tel processus n'existe pas start-stop-daemon se termine avec un code d'erreur égal à 1 (0 if –oknodo est précisé).

OPTIONS

  • -x|–exec executable

Cherche les processus qui sont des exemplaires de cet exécutable (selon /proc/pid/exe).

  • -p|–pidfile pid-file

Cherche les processus dont les identifiants sont précisés dans pid-file.

  • -u|–user nom-d-utilisateur|uid

Cherche les processus qui appartiennent à l'utilisateur défini par nom-d-utilisateur ou uid.

  • -n|–name nom-de-processus

Cherche les processus dont le nom est nom-de-processus (selon /proc/pid/stat).

  • -s|–signal signal

Avec l'action –stop, on définit le signal à envoyer au processus qui doit être arrêté (par défaut : signal 15).

  • -R|–retry durée|action-prévue

Avec l'action –stop, start-stop-daemon doit vérifier que les processus se sont terminés. Il le fait pour tous les processus correspondants qui tournent, jusqu'à ce qu'il n'y en ait plus. Quand le processus ne se termine pas, il prend d'autres mesures déterminées par l'action-prévue.

Si durée est indiqué plutôt que action-prévue, l'action-prévue signal/durée/KILL/durée est utilisé, où signal est le signal indiqué par –signal.

action-prévue est une liste d'au moins deux items séparés par des barres obliques (/) ; Chaque item peut être de la forme -signal-number ou de la forme [-]signal-name, ce qui demande d'envoyer ce signal ; ou bien de la forme durée, ce qui demande d'attendre tant de secondes avant de terminer les processus, ou bien de la forme forever, ce qui demande de répéter constamment le reste de action-prévue, si nécessaire.

Quand la fin de l'action-prévue est atteinte et que forever n'a pa été précisé, start-stop-daemon se termine avec un code d'erreur égal à 2. Quand une action-prévue est indiquée, tout signal donné par –signal est ignoré.

  • -a | –startas chemin/nom

Avec l'action –start , lance le processus spécifié par chemin/nom. Si rien n'est précisé, c'est par défaut l'argument donné à –exec.

  • -t | –test

Affiche les actions qui seraient entreprises et détermine la bonne valeur de retour, mais ne fait rien.

  • -o | –oknodo

Retourne un code de sortie égal à 0 au lieu de 1 si rien n'est ou ne sera fait.

  • -q | –quiet

N'affiche pas de messages d'information ; affiche seulement les messages d'erreur.

  • -c | –chuid

Change l'utilisateur ou l'identifiant avant de lancer le processus. On peut aussi préciser un groupe an ajoutant un « : », puis le groupe ou un identifiant de la même façon qu'avec la commande « chown » (utilisateur:groupe). Quand on utilise cette option, on doit s'apercevoir que les groupes primaires ainsi que les groupes supplémentaires sont aussi déterminés, même si l'option « group » n'est pas spécifiée. L'option « group » sert seulement pour les groupes dont l'utilisateur n'est pas un membre régulier (c'est comme rendre membres d'un groupe-processus des utilisateurs génériques comme « nobody »).

  • -r | –chroot root

Change de répertoire racine pour root avant de lancer le processus. Remarquez que le « pidfile » est aussi écrit après le changement de racine.

  • -b | –background

est utilisé de manière classique pour les programmes qui ne « se détachent » pas d'eux-mêmes. Cette option oblige start-stop-daemon à se dupliquer (fork) avant de lancer le processus, et l'oblige à passer en arrière-plan. AVERTISSEMENT : start-stop-daemon ne peut pas vérifier le code de sortie quand, pour une raison ou une autre, le processus échoue. C'est un expédient dont on se servira seulement pour des programmes dont la duplication n'a pas de sens ou bien des programmes dont le code n'est pas transformable pour leur ajouter cette fonctionnalité.

  • -N|–nicelevel

Cela modifie la priorité du processus avant qu'il ne soit lancé.

  • -m | –make-pidfile

Est utilisé lors du lancement d'un programme qui ne crée pas son propre fichier identificateur. Cette option dit à start-stop-daemon de créer le fichier référencé par –pidfile et place le « pid » dans ce fichier juste avant d'exécuter le processus. Il faut remarquer que ce fichier n'est pas supprimé quand le programme s'arrête. NOTE : il se peut que cette caractéristique ne marche pas dans tous les cas. Et notamment quand le programme qui est exécuté se duplique. À cause de cela, cette option n'est habituellement utile que combinée avec l'option –background.

  • -v | –verbose

Affiche des messages prolixes de renseignements.

  • -H | –help

Affiche une aide et se termine.

  • -V | –version

Affiche le numéro de version et se termine.

Exemples

Exemple de démarrage du démon ajaxterm :

start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON -- --daemon --port=$PORT --uid=ajaxterm >/dev/null || return 2

Exemple d'arrêt du démon ajaxterm :

start-stop-daemon --stop --pidfile $PIDFILE

Exemple Apache :

#! /bin/bash
#
# apache        Start the apache HTTP server.
#

NAME=apache
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/apache
SUEXEC=/usr/lib/apache/suexec
PIDFILE=/var/run/$NAME.pid
CONF=/etc/apache/httpd.conf
APACHECTL=/usr/sbin/apachectl

trap "" 1
export LANG=C
export PATH

test -f $DAEMON || exit 0
test -f $APACHECTL || exit 0

# ensure we don't leak environment vars into apachectl APACHECTL="env -i LANG=${LANG} PATH=${PATH} $APACHECTL"

if egrep -q -i "^[[:space:]]*ServerType[[:space:]]+inet" $CONF then
  exit 0
fi

case "$1" in
start)
  echo -n "Starting web server: $NAME"
  start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON
  ;;

stop)
  echo -n "Stopping web server: $NAME"
  start-stop-daemon --stop --pidfile $PIDFILE --oknodo --exec $DAEMON
  ;;
 
reload)
  echo -n "Reloading $NAME configuration"
  start-stop-daemon --stop --pidfile $PIDFILE --signal USR1 --exec $DAEMON
  ;;

reload-modules)
  echo -n "Reloading $NAME modules"
  start-stop-daemon --stop --pidfile $PIDFILE --oknodo --retry 30
  start-stop-daemon --start --pidfile $PIDFILE --exec $DAEMON
  ;;

restart)
  $0 reload-modules
  exit $?
  ;;

force-reload)
  $0 reload-modules
  exit $?
  ;;

*)
  echo "Usage: /etc/init.d/$NAME
{start|stop|reload|reload-modules|force-reload|restart}"
  exit 1
  ;;
esac

if [ $? == 0 ]; then
      echo .
      exit 0
else
      echo failed
      exit 1
fi 
tuto/linux/lancer_des_services_avec_start-stop-daemon.txt · Dernière modification: 2009/03/31 20:36 par root