#1 Le 17/03/2024, à 12:24
- BrunoL
redirection log et/ou error
Bonjour.
J'utilise cette instruction trouvée dans ce forum qui permet d'envoyer les messages (erreurs et normaux) d'un job dans un fichier log en l’occurrence $RSYNC_RAPPORT et à l'écran :
do_rsync 3>&1 4>&2 > >(tee /$RSYNC_RAPPORT) 2>&1
Mon pb est que je ne comprend rien à ce montage or je souhaiterai que les messages d'erreurs aillent à l'écran et dans le log et les autres dans le log seulement. Et si au passage vous pouvez m'éclairer sur le fonctionnement de cette instruction ce serait super.
Merci.
Hors ligne
#2 Le 17/03/2024, à 14:36
- Watael
Re : redirection log et/ou error
>(...) est une Substitution de processus. C'est comme un pipe, mais ça se comporte comme un fichier.
ici, le "fichier" reçoit des données. On voit plus souvent la forme inverse, qui envoie ses données <(...), comme dans while... do; ...; done < <(...).
pour envoyer stderr vers un fichier ET vers la sortie standard, et la sortie standard vers le même fichier :
cmd 2> >(tee -a "$log") > "$log"
Attention! les messages ne seront pas nécessairement dans l'ordre d'affichage, car la Substitution de processus est exécutée de manière asynchrone.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 17/03/2024, à 19:02
- BrunoL
Re : redirection log et/ou error
Hello Watael,
Merci pour ces précisions mais ma compréhension se dégrade
Dans la 1ère version je vois &1 et &2 ça me rassure mais je ne comprends pas ce que 3 et 4 viennent faire là.
Mais dans ton instruction les choses me paraissent encore plus sibylline ... je n'ai plus que 2 (je suppose &2 ?). Si je considère ne pas créer le log mais ajouter les lignes à un log existant que devient ton instruction ?
Hors ligne
#4 Le 17/03/2024, à 21:20
- Watael
Re : redirection log et/ou error
2, c'est le stderr, en effet.
l'esperluette n'est nécessaire que lorsqu'on fait une redirection vers un descripteur de fichier.
pour 3 et 4, il faudrait peut-être voir les redirections dans la fonction do_rsync...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne