J'ai des scripts où j'ai besoin de voir la sortie et log le résultat à un fichier, avec l'exemple le plus simple:
$ update-client > my.log
Je veux pouvoir voir la sortie de la commande pendant son exécution, mais aussi l'avoir connecté au fichier. Je me connecte aussi stderr
. Je voudrais donc pouvoir enregistrer le flux d'erreur tout en le voyant aussi.
update-client 2>&1 | tee my.log
2> & 1 redirige une erreur standard vers la sortie standard et TEE envoie son entrée standard à la sortie standard et au fichier.
Utilisez simplement la queue pour regarder le fichier tel qu'il est mis à jour. Contexte Votre processus d'origine en ajoutant et après la commande ci-dessus après avoir exécuté la commande ci-dessus, il suffit d'utiliser
$ tail -f my.log
Il mettra continuellement à jour. (Remarque Il ne vous dira pas lorsque le fichier a fini de fonctionner afin que vous puissiez produire quelque chose sur le journal pour vous indiquer qu'il est terminé. Ctrl-C à quitter la queue)
une autre option consiste à utiliser la capture de sortie basée sur des blocs à partir du script (pas sûr si c'est le terme technique correct).
Exemple
#!/bin/bash
{
echo "I will be sent to screen and file"
ls ~
} 2>&1 | tee -a /tmp/logfile.log
echo "I will be sent to just terminal"
J'aime avoir plus de contrôle et de flexibilité - donc je préfère ainsi.