web-dev-qa-db-fra.com

Rediriger la sortie d'écho du script Shell vers le fichier journal

J'ai un script Shell avec beaucoup de echo dedans. Je voudrais rediriger la sortie vers un fichier journal. Je sais qu'il y a l'appel de commande cmd > logfile.txt, ou pour le faire dans le fichier echo 'xy' > logfile.txt, mais est-il possible de simplement définir le nom de fichier dans le script qui écrit alors automatiquement tous les échos dans ce fichier?

18
wasp256

Vous pouvez ajouter cette ligne en haut de votre script:

#!/bin/bash
# redirect stdout/stderr to a file
exec &> logfile.txt

OU sinon pour rediriger uniquement l'utilisation standard:

exec > logfile.txt
27
anubhava

J'ai essayé de gérer en utilisant la commande ci-dessous. Cela écrira la sortie dans le fichier journal ainsi que l'impression sur la console.

#!/bin/bash

# Log Location on Server.
LOG_LOCATION=/home/user/scripts/logs
exec > >(tee -i $LOG_LOCATION/MylogFile.log)
exec 2>&1

echo "Log Location should be: [ $LOG_LOCATION ]"
14
Sandeep Singh

Vous pouvez facilement rediriger différentes parties de votre script Shell vers un fichier (ou plusieurs fichiers) à l'aide de sous-shells:

{
  command1
  command2
  command3
  command4
} > file1
{
  command5
  command6
  command7
  command8
} > file2
8
txipi
LOG_LOCATION="/path/to/logs"    
exec >> $LOG_LOCATION/mylogfile.log 2>&1
3
Elayaraja Dev