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?
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
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 ]"
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
LOG_LOCATION="/path/to/logs"
exec >> $LOG_LOCATION/mylogfile.log 2>&1