108 votes

Forcer le vidage de la sortie dans un fichier alors que le script bash est toujours en cours d’exécution

J’ai un petit script, qui est appelé quotidiennement par crontab en utilisant la commande suivante:

Le problème avec cette méthode est que some_log.log n’est créé qu’une fois MyScript terminé. Je voudrais vider la sortie du programme dans le fichier pendant qu’il est en cours d’exécution afin que je puisse faire des choses comme

et garder une trace des progrès, etc.

109voto

Martin Wiebusch Points 799

J’ai trouvé une solution à cela ici. En utilisant l’exemple de l’OP, vous exécutez essentiellement

puis le tampon est vidé après chaque ligne de sortie. Je combine souvent cela avec `` pour exécuter de longues tâches sur une machine distante.

De cette façon, votre processus n’est pas annulé lorsque vous vous déconnectez.

39voto

user3258569 Points 1
<pre><code></code><p>La clé est -f. Citation du script de l’homme:</p><pre><code></code></pre><p>Exécuter en arrière-plan :</p><pre><code></code></pre></pre>

31voto

Chris Dodd Points 1990

bash lui-même n’écrira jamais de sortie dans votre fichier journal. Au lieu de cela, les commandes qu’il appelle dans le cadre du script écriront chacune individuellement la sortie et flush quand ils en auront envie. Donc, votre question est vraiment de savoir comment forcer les commandes dans le script bash à rincer, et cela dépend de ce qu’elles sont.

8voto

mithy Points 1221

Vous pouvez l’utiliser `` pour écrire dans le fichier sans avoir besoin de rinçage.

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