Sous Unix, quelle est la meilleure façon de réduire la taille d'un fichier journal massif qui est activement écrit?


11

Sur un serveur Linux, je veux réduire la taille d'un fichier journal qui fait plusieurs Go. Couper la moitié supérieure, ou peut-être que le premier million de lignes fonctionnerait.

Réponses:


12

Cela revient souvent dans les interviews ...

Cherchez-vous à tronquer le fichier sans perturber les processus? L'une des informations du fichier journal est-elle précieuse? Si c'est le cas, j'ai l'habitude de "mettre à zéro" le fichier avec une simple chaîne bash.

: > /var/log/badlogfile

Cela se produit dans des situations où vous pouvez avoir une application qui ne peut pas être redémarrée de manière contrôlée. Disons que c'est une application de trading financier et que le programme ne peut pas être interrompu ou redémarré pendant la journée de trading. Cependant, les fichiers journaux augmentent à un rythme obscène en raison d'un bogue d'application. La troncature des fichiers journaux à l'aide de la méthode ci-dessus ou ci-dessous peut maintenir le système en marche.

Voir également: http://www.cyberciti.biz/faq/truncate-large-text-file-in-unix-linux/


1
le deux-points est-il censé indiquer une invite, ou est-ce que cela va réellement dans la commande?
Phil

Le deux-points fait partie de la commande.
ewwhite

Vous n'avez pas vraiment besoin des deux points.
MikeyB

C'est un no-op. Ce n'est pas nécessaire, mais j'aime le garder là quand je fais la recommandation.
ewwhite

Cela n'a pas fonctionné pour moi, la taille du journal n'a pas changé. Il est passé à 0, mais est ensuite revenu à sa taille
maximale

2

Vous pouvez le mettre dans logrotate, alors il ne deviendra pas hors de contrôle aussi facilement


En fin de compte, cela doit se produire. Je suis nouveau dans ce travail ...
Phil

1

S'il vous est écrit activement, vous n'avez pas grand-chose à faire en tronquant. Vos seules options sont de vider le fichier (vous pouvez d'abord le copier ailleurs.)

echo "" >/var/log/fileYouWantToEmpty

De cette façon, le fichier finit vide mais est toujours le même fichier / inode afin qu'il ne perturbe pas le programme qui se connecte.


0

Vous pouvez également essayer cat / dev / null> / var / log /. Mais, je dois avertir que / dev / null n'est pas implémenté dans certaines des anciennes versions ...


tronquer le fichier ne fonctionne pas pour moi, j'ai fait le test sur centos 7 et sur redhat 5
c4f4t0r
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.