2014-05-01 3 views
1

Je sais que cela a été demandé à plusieurs reprises, mais je peux trouver une réponse appropriée dans mon cas.script shell: écrire sdterr & sdtout dans le fichier

J'ai croné un script de sauvegarde en utilisant rsync et j'aimerais voir toutes les sorties, erreurs ou non, de toutes les commandes de script. Je dois écrire la commande à l'intérieur du le script lui-même, et je ne veux pas voir la sortie dans mon shell. J'ai essayé sans succès. Ci-dessous une partie du script.

#!/bin/bash 
..... 
BKLOG=/mnt/backup_error_$now.txt 
# Log everything to log file 
# something like 
exec 2>&1 | tee $BKLOG 
# OR 
exec &> $BKLOG 

Je suis ajouter au script beginig toutes sortes de exec | tee $BKLOG avec l'ajout &>, 2>&1 à différentes parties de la ligne de commande, mais tout a échoué. Je reçois un fichier journal vide ou incomplet. J'ai besoin de voir sur le fichier journal ce que rsync a fait, et l'erreur si le script a échoué avant la synchronisation.

Nous vous remercions de votre aide. Mon shell est zsh, donc toute solution dans zsh est la bienvenue.

Répondre

2

Pour rediriger tous les stdout/stderr à un endroit de cette ligne de fichier sur le dessus de votre script:

BKLOG=/mnt/backup_error_$now.txt 
exec &> "$BKLOG" 
+0

Solution fonctionne. Je vous remercie. Je pensais déjà essayé. – gabx

+0

De rien, heureux que cela a fonctionné. – anubhava

Questions connexes