71 votes

Existe-t-il un moyen de rediriger la sortie vers un fichier sans mise en mémoire tampon sous unix/linux ?

J'ai un processus de traitement par lots qui s'exécute sur une longue période et qui envoie des informations de débogage et de processus vers stdout. Si je l'exécute à partir d'un terminal, je peux savoir où il se trouve, mais les données deviennent trop nombreuses et défilent à l'écran.

Si je redirige la sortie vers un fichier '> out.txt', j'obtiens finalement toute la sortie mais elle est mise en mémoire tampon et je ne peux plus voir ce qu'elle fait en ce moment.

Y a-t-il un moyen de rediriger la sortie mais de faire en sorte qu'elle ne mette pas en mémoire tampon ses écritures ?

3voto

Paweł Brodacki Points 6411

Personnellement, je préfère pipeter la sortie d'une commande que je veux examiner par le biais de tee .

script enregistre trop d'informations, notamment le moment où l'on appuie sur les touches, et beaucoup de caractères non imprimables. Ce que tee saves est beaucoup plus lisible humainement pour moi.

2voto

Lawrence Points 203

Rediriger la sortie dans un fichier et suivre le fichier avec la fonction tail -f mando.

Editar

Si le problème de mise en mémoire tampon persiste, utilisez la fonction syslog (qui est généralement sans mémoire tampon). Si le processus batch s'exécute en tant que Shell Shell, vous pouvez utiliser la commande logger pour le faire. Si le travail par lot s'exécute dans un langage de script, il devrait y avoir une fonction de journalisation de toute façon.

2voto

Manish Ranjan Points 385

Vous pouvez utiliser le tee commande, juste de la magie !

someCommand | tee logFile.log sera les deux afficher dans la console et écrire dans le fichier journal.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X