start-stop-daemon - Lance ou arrête des démons
système
start-stop-daemon [option...] commande
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 »).
- -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.
- [--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.
- -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.
- 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.
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 /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 /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 /run/food.pid --retry=TERM/30/KILL/5
Ariel VARDI <ariel.vardi@freesbee.fr>, 2002. Philippe
Batailler, 2006. Nicolas François, 2006. Veuillez signaler toute
erreur à <debian-l10n-french@lists.debian.org>.