im écrit un script Bash pour effectuer une sauvegarde hors site, en utilisant RSYNC sur SSH. Je suis capable d'envoyer STDOUT à l'enregistreur, pour les journaux via mais je veux envoyer STDERR à la place, alors s'il y a un problème, tel que celui-ci hors site em> est indisponible, cette sortie doit être envoyée à l'enregistreur et à l'enregistrement. p> p>
3 Réponses :
Vous pouvez rediriger le descripteur STDRERR (2) sur stdout (1) en ajoutant 2> & 1 code>, par exemple:
Si vous voulez STDERR au lieu de STDOUT (plutôt que STDERR et STDOUT), vous pouvez procéder comme suit:
qui ressemble à ceci: p> alternativement, vous pouvez utiliser la substitution de processus: p> logger -i <( rsync --del -az -e 'ssh -i mycrt.crt' /home/gnutt/backup/ me@offisite:backup > /dev/null )
Une autre façon de vous assurer que vos erreurs de script sont capturées ainsi que les erreurs RSYNC, est de faire quelque chose comme ceci: maintenant, toutes les données écrites à stardr seront enregistrées, pas seulement de rsync. Cependant, ignorer Pour fermer explicitement les poignées ou les restaurer, envisagez Les éléments suivants: p> pour les versions plus anciennes de bash, vous devrez peut-être être un peu plus émoussé: p> stdout code> est typiquement une mauvaise idée lorsqu'il s'agit de déboguer, car des informations utiles pouvant mettre en évidence la cause d'une erreur pourraient être enregistrées là-bas. Si vous souhaitez différencier STDERR et STDOUT, ne traverser les flux em>: p>
Merci de me montrer le N >> (Dothis ...).
Peut-être que vous voulez dire "STDOUT et STDOUT" NON "STDERR à la place".
En fait, je n'étais qu'après STREDR, car il ne devrait pas générer de sortie autrement.