| SYSTEMD-NOTIFY(1) | systemd-notify | SYSTEMD-NOTIFY(1) |
NOM¶
systemd-notify – Gestionnaire de service de notifications sur le déroulement de l’amorçage et d’autres modifications d’état de démon
SYNOPSIS¶
systemd-notify [OPTIONS...] [VARIABLE=VALEUR...]
systemd-notify --exec [OPTIONS...] [VARIABLE=VALUE...] ; -- {LIGNE_COMMANDE...}
systemd-notify --fork [OPTIONS...] -- {LIGNE_COMMANDE...}
DESCRIPTION¶
systemd-notify peut être appelé par des scripts de service pour notifier le gestionnaire de service appelant de modifications d’état. Il peut être utilisé pour envoyer des informations arbitraires, encodées dans une liste de chaines de type bloc d’environnement. Plus important, il peut être utilisé pour des notifications de l’avancement de l’amorçage.
C’est en grande partie une enveloppe de sd_notify() et procure cette fonctionnalité aux scripts d’interpréteur de commandes. Pour plus de détails, consulter sd_notify(3).
La ligne de commande peut comporter une liste de variables d’environnement à envoyer comme composante de la mise à jour d’états.
Notez que systemd refuse la réception de mises à jour de cette commande à moins que NotifyAccess= ne soit réglé de façon appropriée pour l’unité de service à partir de laquelle la commande est appelée. Consulter systemd.service(5) pour plus de détails.
Notez que les notifications sd_notify() ne peuvent être attribuées correctement aux unités que si le processus émetteur est toujours présent au moment où le gestionnaire de service traite le message ou si le processus émetteur fait explicitement l'objet d'un suivi d'exécution par le gestionnaire de service. Ce dernier cas est celui où le gestionnaire de service fourche initialement le processus, c’est-à-dire pour tous les processus qui correspondent à NotifyAccess=main ou NotifyAccess=exec. Inversement, si un programme auxiliaire de l’unité envoie un message sd_notify() et quitte immédiatement, le gestionnaire de service peut ne pas pouvoir attribuer correctement le message à l’unité et, par conséquent, l’ignorer même si NotifyAccess=all est réglé pour elle. Pour corriger cela, systemd-notify attend jusqu’à ce que le message de notification soit traité par le gestionnaire de service. Lorsque l’option --no-block est utilisée, cette synchronisation pour la réception de notification est désactivée, et ainsi la situation de compétition susmentionnée peut se produire si le processus appelant n’est pas le gestionnaire de service ou n’est pas engendré par le gestionnaire de service.
systemd-notify essaie d’abord d’invoquer sd_notify() en prétendant détenir le PID du processus parent de systemd-notify (c’est-à-dire le processus appelant). Cela ne fonctionne que si cela est invoqué avec les privilèges suffisants. En cas d’échec, il se rabat sur une invocation sous son propre PID. Ce comportement est utile afin que, lorsque l’outil est invoqué par un script d’interpréteur de commandes, ce processus d’interpréteur — et pas le processus systemd-notify — apparaisse comme l’émetteur du message, ce qui est ensuite utile si le processus d’interpréteur est le processus principal d’un service, à cause des limitations de NotifyAccess=all. Utilisez le commutateur --pid= pour ajuster ce comportement.
OPTIONS¶
Les options suivantes sont comprises :
--ready
--reloading
Ajouté dans la version 253.
--stopping
Ajouté dans la version 253.
--pid=
systemd-notify essaie d’abord d’invoquer sd_notify() en prétendant détenir le PID indiqué avec l’option --pid=. Cela ne fonctionne que si cela est invoqué avec les privilèges suffisants. En cas d’échec, il se rabat sur une invocation sous son propre PID. En réalité, cela signifie qu’une invocation avec privilèges de systemd-notify --pid= peut contourner les restrictions NotifyAccess=main ou NotifyAccess=exec appliquées à un service.
Si cette option est utilisée par une invocation sans privilèges de systemd-notify par un processus qui devient le nouveau processus principal d’un service — et qui n’est pas le processus fourché par le gestionnaire de service (ou le processus principal actuel) —, alors il est essentiel de régler NotifyAccess=all dans le fichier d’unité de service, sinon la notification est ignorée pour des raisons de sécurité. Consulter systemd.service(5) pour plus de détails.
--uid=UTILISATEUR
Ajouté dans la version 237.
--status=
--booted
--no-block
Ajouté dans la version 246.
--exec
Remarquez que de nombreux interpréteurs de commandes interprètent « ; » comme leur propre séparateur de ligne de commande, par conséquent, quand systemd-notify est invoqué à partir d’un interpréteur, le point-virgule doit être protégé par « \; ».
Ajouté dans la version 254.
--fd=
Pour se servir de cette fonctionnalité dans un interpréteur bash(1), utilisez une expression telle que la suivante :
systemd-notify --fd=4 --fd=5 4</un/fichier 5</un/autre/fichier
Ajouté dans la version 254.
--fdname=
Ajouté dans la version 254.
--fork
Remarquez que les processus fourchés continueront probablement à s'exécuter après l’arrêt de systemd-notify, ce qui aboutira à ce qu’ils soient réapparentés au processus moissonneur le plus proche, c'est-à-dire généralement le gestionnaire de service propre à l’utilisateur ou du système.
Remarquez que cette option ne doit pas être utilisée pour lancer des services complets ponctuellement ; utilisez plutôt systemd-run(1) dans ce cas.
Remarquez aussi qu’invoqué avec cette option, systemd-notify termine avec succès sous deux conditions distinctes :
Exemple d’utilisation :
# PID=$(systemd-notify --fork -- ma_commande) ... kill "$PID" unset PID
Ajouté dans la version 258.
--quiet, -q
Ajouté dans la version 258.
-h, --help
--version
CODE DE RETOUR¶
En cas de succès, 0 est renvoyé, autrement, un code d'échec différent de zéro est renvoyé.
EXEMPLE¶
Exemple 1. Notification d’amorçage et mises à jour d’état
Simple démon d’interpréteur de commandes envoyant des notifications d’amorçage après avoir configurer son canal de communication. Pendant l’exécution, envoi de mises à jour d’état au système init :
#!/bin/sh mkfifo /tmp/téléopérateur systemd-notify --ready --status="Attente de données..." while : ; do
read -r a < /tmp/téléopérateur
systemd-notify --status="Traitement de $a"
# Faire quelque chose avec $a ...
systemd-notify --status="Attente de données..." done
VOIR AUSSI¶
systemd(1), systemctl(1), systemd.unit(5), systemd.service(5), sd_notify(3), sd_booted(3)
TRADUCTION¶
La traduction française de cette page de manuel a été créée par Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.
| systemd 261~rc3 |