start-stop-daemon(8)

NOM
start-stop-daemon - Lance ou arrête des démons système

SYNOPSIS
start-stop-daemon [option...] commande

DESCRIPTION
On se sert de start-stop-daemon pour contrôler la création ou l'arrêt de processus système. En utilisant une des options de correspondance, start-stop-daemon peut être configuré pour trouver les exemplaires présents d'un processus en fonctionnement.

Note : à moins d'utiliser --pid ou --pidfile, le programme start-stop-daemon se comporte comme killall(1). start-stop-daemon recherche dans le tableau des processus tout processus qui correspond au nom, pid parent, uid et/ou gid du processus (si indiqué). Toute correspondance empêchera --start de démarrer le démon. Tous les processus qui correspondent recevront le signal TERM (ou le signal indiqué par --signal ou --retry) si --stop est indiqué. Pour les démons avec des processus enfants qui doivent survivre à un --stop, il est nécessaire d'indiquer un fichier pid (« pidfile »).

COMMANDES

-S, --start [--] paramètres
    Vérifier l'existence d'un processus particulier. Quand il 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é, en utilisant le paramètre de --exec ou celui de --startas si cette option est précisée. Tout argument donné après -- sur la ligne de commande est passé tel quel au programme qui doit être lancé.

-K, --stop
    Vérifier 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 si --oknodo est précisé). Si --retry est indiquée, start-stop-daemon recherche si le processus ou les processus se sont bien terminés.

-T, --status
    Contrôle l'existence du processus indiqué et sort avec un code de sortie défini par les actions des scripts d'initialisation de la LSB (« LSB Init Script Actions » – depuis la version 1.16.1).

-H, --help
    Affiche un message d'aide, puis quitte.

-V, --version
    Affiche la version du programme, puis quitte.

OPTIONS

  Options de correspondance

[--pid] pid
    Vérifie l'existence d'un processus avec le pid spécifié (depuis la version 1.17.6). Le pid doit avoir un numéro supérieur à 0.

[--ppid] pid parent
    Vérifie l'existence d'un processus avec le pid parent pid-parent spécifié (depuis la version 1.17.7). Le pid-parent doit avoir un numéro supérieur à 0.

-p, --pidfile fichier-pid
    Cherche les processus dont les identifiants sont précisés dans fichier-pid.

    Note : l'utilisation de l'option de correspondance seule peut provoquer des actions sur des processus non prévus, si l'ancien processus s'est terminé sans avoir retiré le fichier-pid.

    Attention : L'utilisation de cette option de correspondance avec un fichier pid accessible à tous en écriture ou seule avec un démon qui écrit le fichier pid comme utilisateur non privilégié (pas root) sera refusée avec une erreur (depuis la version 1.19.3), car c'est un risque de sécurité, parce que, si le démon se trouve compromis, le contenu du fichier pid ne peut plus être sûr, et ainsi, un exécutant privilégié (comme un script init exécuté entant que root) pourrait en fin de compte agir sur n'importe quel processus du système. L'utilisation de /dev/null est exclue de ces vérifications.

-x, --exec exécutable
    Contrôle l'existence de processus qui soient des exemplaires de cet exécutable. Le paramètre exécutable doit être un chemin absolu.

    Note : cela peut ne pas fonctionner avec des scripts interprétés, car l'exécutable sera alors l'interpréteur. Des processus en exécution au sein d'un environnement fermé d'exécution (« chroot ») seront également trouvés et il peut donc être nécessaire d'ajouter d'autres restrictions de correspondance.

-n, --name nom-de-processus
    Contrôle l'existence de processus avec nom-de-processus comme nom. Le nom-de-processus est en général le nom du fichier du processus, mais peut avoir été modifié par le processus lui-même.

    Note : sur la plupart des systèmes, cette information est récupérée par le nom de communication du noyau, ce qui induit une limite de longueur assez courte (la portabilité impose de ne pas supposer plus de 15 caractères).

-u, --user identifiant|uid
    Contrôle l'existence de processus dont le propriétaire est identifiant ou uid.

    Note : si cette option est utilisée seule, tous les processus de cet utilisateur seront concernés par l'action.

  Options génériques

-g, --group groupe|gid
    Modifie le groupe ou le gid au début du processus.

-s, --signal signal
    L'action --stop définit le signal à envoyer au processus qui doit être arrêté (par défaut : TERM).

-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ée plutôt que action-prévue, l'action-prévue signal/durée/KILL/durée est utilisée, 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 -numéro-signal ou de la forme [-]nom-signal, 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 pas é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 nom-de-chemin
    Avec l'action --start, lance le processus spécifié par nom-de-chemin. 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 identifiant|uid[:groupe|gid]
    Change pour cet utilisateur ou « uid » avant de lancer le processus. On peut aussi préciser un groupe en ajoutant un :, puis le groupe ou un « gid » de la même façon qu'avec la commande chown(1) (utilisateur:groupe). Lorsqu'un utilisateur est indiqué mais pas de groupe alors le groupe primaire de celui-ci est utilisé. Quand on utilise cette option, on doit veiller à ce que les groupes primaires ainsi que les groupes secondaires existent bien, 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 membre (c'est comme rendre membre d'un groupe-pour-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.

-d, --chdir chemin
    Change de répertoire pour chemin avant de commencer le processus. Cela est fait après le changement de répertoire racine si l'option -r|--chroot est demandée. Si rien n'est demandé, start-stop-daemon changera de répertoire pour le répertoire racine avant de commencer le processus.

-b, --background
    Utilisé généralement 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 adaptable pour leur ajouter cette fonctionnalité.

--notify-await
    Attend que le processus en arrière-plan envoie une notification de disponibilité avant de considérer que le service est démarré (depuis la version 1.19.3). Cela met en œuvre des éléments du protocole de disponibilité de systemd, comme spécifié dans la page de manuel de sd_notify(3). Les variables suivantes sont prises en charge :

    READY=1
        Le programme est prêt à offrir son service, il est possible de quitter sans risque.

    EXTEND_TIMEOUT_USEC=nombre
        Le programme demande l'extension de la durée de nombre microsecondes. Cela fixera la durée en cours à la valeur spécifiée.

    ERRNO= nombre
        Le programme s'est terminé avec une erreur. Fait la même chose et affiche une chaîne conviviale pour la valeur de errno.

--notify-timeout durée
    Définit une durée pour l'option --notify-await (depuis la version 1.19.3). Quand la durée est atteinte, start-stop-daemon s'arrête avec un code d'erreur et aucune notification de disponibilité n'est attendue. La durée par défaut est de 60 secondes.

-C, --no-close
    Ne fermer aucun descripteur de fichiers en forçant le démon à s'exécuter en arrière-plan (depuis la version 1.16.5). Utilisé à des fins de débogage afin de voir ce qu'affiche le processus ou pour rediriger les descripteurs de fichiers pour journaliser l'affichage du processus. N'est pertinent que lors de l'utilisation de --background.

-O, --output nom-de-chemin
    Rediriger stdout et stderr vers nom-de-chemin en forçant le démon à s'exécuter en arrière-plan (depuis la version 1.20.6). N'est pertinent que lors de l'utilisation de --background.

-N, --nicelevel int
    Cela modifie la priorité du processus avant qu'il ne soit lancé.

-P, --procsched politique:priorité
    Modifie la politique du programmateur de processus (« process scheduler policy ») et la priorité du processus avant de le démarrer (depuis la version 1.15.0). La priorité peut être indiquée de manière facultative avec : suivi de la valeur souhaitée. La priorité par défaut est 0. Les valeurs de politiques actuellement gérées sont other, fifo et rr.

    Cette option peut ne rien faire sur certains système où la programmation des processus de POSIX n'est pas prise en charge.

-I, --iosched classe:priorité
    Modifie la classe du programmateur d'entrée/sortie (« IO scheduler ») et la priorité du processus avant de le démarrer (depuis la version 1.15.0). La priorité peut être indiquée de manière facultative avec : suivi de la valeur souhaitée. La priorité par défaut est 4, sauf si classe est idle, auquel cas priorité sera toujours égale à 7. Les valeurs de classe actuellement gérées sont idle, best-effort et real-time.

    Cette option peut ne rien faire sur certains système où la programmation d'entrée/sortie de Linux n'est pas prise en charge.

-k, --umask masque
    Cela modifie le masque utilisateur du processus avant qu'il ne soit lancé (depuis la version 1.13.22).

-m, --make-pidfile
    Utilisé lors du lancement d'un programme qui ne crée pas son propre fichier identificateur « pid ». Cette option indique à start-stop-daemon de créer le fichier référencé par --pidfile et placer le « pid » dans ce fichier juste avant d'exécuter le processus. Il faut remarquer que ce fichier ne sera supprimé quand le programme s'arrête que si --remove-pidfile est utilisé.

    NOTE : il se peut que cette caractéristique ne marche pas dans tous les cas. 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.

--remove-pidfile
    Utilisé lors de l'arrêt d'un programme qui ne supprime pas lui-même son fichier identificateur « pid » (depuis la version 1.17.19). Cette option indique à start-stop-daemon de supprimer le fichier référencé par --pid-file après l'arrêt du processus.

-v, --verbose
    Affiche des messages prolixes en renseignements.

CODE DE SORTIE

0   L'action demandée a été effectuée. Si --oknodo était indiqué, il est également possible que rien ne se soit passé. Cela peut se produire si --start était indiqué et qu'un processus correspondant était déjà en train de s'exécuter ou si --stop était indiqué et qu'aucun processus ne correspondait.

1   Si --oknodo n'était pas indiqué et que rien ne s'est passé.

2   Si --stop et --retry étaient indiqués mais que la fin de la planification a été atteinte et que les processus étaient toujours en cours d'exécution.

3   Toute autre erreur.

Lorsque la commande --status est utilisée, les codes d'état suivants sont renvoyés :

0   Le programme est en cours d'exécution.

1   Le programme n'est pas en cours d'exécution et le fichier PID existe.

3   Le programme n'est pas en cours d'exécution.

4   Impossible de déterminer l'état du programme.

EXEMPLE
Démarre le démon food, à moins qu'il soit déjà en cours d'exécution (un processus nommé food, tournant sous le nom d'utilisateur food, avec un pid dans food.pid) :

 start-stop-daemon --start --oknodo --user food --name food \
   --pidfile /usr/pkg/var/run/food.pid --startas /usr/sbin/food \
   --chuid food -- --daemon

Envoie le signal SIGTERM à food et attend durant 5 secondes son arrêt :

 start-stop-daemon --stop --oknodo --user food --name food \
   --pidfile /usr/pkg/var/run/food.pid --retry 5

Démonstration d'un ordonnanceur personnalisé pour l'arrêt de food :

 start-stop-daemon --stop --oknodo --user food --name food \
   --pidfile /usr/pkg/var/run/food.pid --retry=TERM/30/KILL/5

TRADUCTION
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute erreur à <debian-l10n-french@lists.debian.org>.