2 votes

Comment rediriger à la fois stdout et stderr vers un fichier à partir d'un script bash ?

Je veux ajouter une commande à mon bash script qui dirige tous les stderr et stdout vers des fichiers spécifiques. Depuis este et de nombreuses autres sources, je sais qu'en ligne de commande, j'utiliserais :

/path/to/script.sh >> log_file 2>> err_file

Cependant, je veux quelque chose à l'intérieur de mon script, quelque chose qui ressemble à ces drapeaux slurm :

#!/bin/bash
#SBATCH -o slurm.stdout.txt # Standard output log
#SBATCH -e slurm.stderr.txt # Standard error log

<code>

Existe-t-il un moyen de diriger la sortie à l'intérieur d'un script, ou dois-je utiliser la fonction >> log_file 2>> err_file chaque fois que j'appelle le script ? Merci

3voto

sportzpikachu Points 665

Vous pouvez utiliser ceci :

exec >> file
exec 2>&1

au début de votre script bash. Cela ajoutera à la fois stdout et stderr à votre fichier.

1voto

mcoolive Points 1461

Vous pouvez l'utiliser au début de votre script de bash :

# Redirected Output
exec > log_file 2> err_file

Si le fichier existe, il est tronqué à une taille nulle. Si vous préférez ajouter un fichier, utilisez ceci :

# Appending Redirected Output
exec >> log_file 2>> err_file

Si vous voulez rediriger à la fois stdout et stderr vers le même fichier, alors vous pouvez utiliser :

# Redirected Output
exec &> log_file
# This is semantically equivalent to
exec > log_file 2>&1

Si vous préférez annexer, utilisez ceci :

# Appending Redirected Output
exec >> log_file 2>&1

0voto

tallamjr Points 195
#SBATCH --output=serial_test_%j.log   # Standard output and error log

Ceci enverra toute la sortie, c'est-à-dire stdout et stderr vers un seul fichier journal appelé serial_test_<JOBID>.log

Réf : https://help.rc.ufl.edu/doc/Sample_SLURM_Scripts

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X