Comment canaliser toute la sortie du terminal, y compris les messages d'erreur de script dans un fichier journal

Je suis en train de faire un lisible fichier journal pour une grande backupscript.

Dans le script il me suffit de canaliser toutes les sorties de commandes à un gros fichier, puis plus tard, peut-être "nettoyé" par le script. Par exemple:

echo "Error occurred" >> log.file
mount disk >> log.file

Les avertissements et les erreurs que j'ai raté j'ai tuyau au niveau de la console lors de l'exécution du script.

backup.script >> log.file

Mais encore que, les messages d'erreur ne sont pas toujours consignées dans mon fichier, lors de l'exécution du script (avec tuyau) par cron je reçois des mails de rsync et des erreurs de script:

rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
rsync: write failed on "/mnt/backup1/xxxxx": No space left on device (28)
rsync error: error in file IO (code 11) at receiver.c(322) [receiver=3.0.9]
rsync: connection unexpectedly closed (215 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]

et quand une erreur de script se produit:

/data/scripts/backup.auto: line 320: syntax error near unexpected token `else'

Comment puis-je inclure ces messages d'erreur dans mon fichier log?

  • Dire >> log.file 2>&1 au lieu de >> log.file.
  • Je suis dans le bureau, donc je ne peux pas l'essayer (pas de linux ici), mais la raison est différente des descripteurs de fichiers sont utilisés. devnull juste donné la réponse à cette question. L'ordre de >> et 2>&1 est important btw.
  • 3 réponses à la même minute, c'est ce que j'appelle une réponse rapide! Merci
  • Notez que vous pouvez nettoyer votre script par le groupement des commandes successives qu'écrire dans le même fichier: echo foo >> log.file; echo bar >> log.file deviendrait { echo foo; echo bar; } >> log.file.
  • Voir aussi teelog dans how-do-i-get-deux-stdout et stderr-pour-aller-à-la-terminal-et-un-journal-fichier stackoverflow.com/questions/363223
InformationsquelleAutor Requist | 2014-03-04