Existe-t-il un moyen simple de consigner toutes les activités qui se produisent à partir d'un script shell dans un fichier?
J'ai un script. Il produit des choses comme des "instructions" d'écho, ainsi que d'autres sorties de programme. Je connais les commandes:
command | tee -a "$log_file"
et
command >> logifle.log
Ce que je demande, c'est s'il existe un paramètre shell pour la journalisation, ou une commande set que je peux utiliser ou quelque chose comme ça. Je ne veux pas nécessairement ajouter des dizaines de redirections ou des tés aux fichiers si je n'ai pas à le faire. Je veux toujours obtenir une sortie std - je veux juste aussi qu'elle soit enregistrée.: Wq
Réponses:
si vous exécutez normalement votre script avec
foo.sh
, essayez de l'exécuter (en supposant qu'il s'agit d'un script bash) avecbash -x foo.sh
. Si vous voulez que tout soit redirigé vers un fichier, essayezbash -x foo.sh > file.log 2>&1
(notez que je redirige également stderr, supprimez le2>&1
si vous ne le souhaitez pas). Si vous voulez aussi voir ce qui se passe,bash -x foo.sh 2>&1 | tee log.file
.la source
Il existe un moyen très simple et pratique:
Utilisation
script
pour créer un script de session de terminalLancer la commande
script
Si l'argument
file
est donné, par exemplescript ~/tmp/output
,script
enregistre le dialogue dans ce fichier. Si aucun nom de fichier n'est donné, la boîte de dialogue est enregistrée dans le fichiertypescript
Commencez votre script ou ce que vous voulez commencer
Si votre script est terminé, arrêtez
script
via Ctrl-DVérifiez la sortie dans le fichier de sortie par défaut
typescript
Pour démarrer votre commande en une seule étape avec
script
, utilisez le paramètre-c
L'utilisation de l'
script
intérieur de votre script n'a pas de sens, car ilscript
fourche le shell ou démarre un nouveau shell.la source
script logfilename
, donc je peux le choisir.script
est utile aussi une surveillance via un fifo. Extrait deman script
: "-f, --flush
Vider la sortie après chaque écriture. C'est bien pour la télécoopération: une personne le faitmkfifo foo; script -f foo
et une autre peut superviser en temps réel ce qui se fait en utilisantcat foo
". Il peut également être utilisé pour surveiller quand un programme est en attente d'entrée ou fait par exemple en surveillant l'horodatage du fifo.