Auf einem Linux-Server möchte ich die Größe einer Protokolldatei reduzieren, die mehrere GB groß ist. Das Abschneiden der oberen Hälfte oder vielleicht der ersten Million Zeilen würde funktionieren.
Dies kommt ziemlich oft in Interviews vor ...
Möchten Sie die Datei abschneiden, ohne die Prozesse zu stören? Sind Informationen in der Protokolldatei wertvoll? Wenn ja, "nulle" ich die Datei normalerweise mit einer einfachen Bash-Zeichenfolge.
: > /var/log/badlogfile
Dies tritt in Situationen auf, in denen Sie möglicherweise eine Anwendung haben, die nicht kontrolliert neu gestartet werden kann. Angenommen, es handelt sich um eine Finanzhandelsanwendung, und das Programm kann während des Handelstages nicht angehalten oder neu gestartet werden. Die Protokolldateien wachsen jedoch aufgrund eines Anwendungsfehlers mit einer gewissen obszönen Geschwindigkeit. Durch Abschneiden der Protokolldateien mit der oben oder unten beschriebenen Methode kann das System weiter ausgeführt werden.
Siehe auch: http://www.cyberciti.biz/faq/truncate-large-text-file-in-unix-linux/
Sie könnten es in logrotate setzen, dann wird es nicht so leicht außer Kontrolle geraten
quelle
Wenn es aktiv an Sie geschrieben wird, haben Sie nicht wirklich viel, was Sie durch Abschneiden tun können. Sie können die Datei nur leeren (Sie können sie zuerst an eine andere Stelle kopieren).
Auf diese Weise bleibt die Datei leer, ist aber immer noch dieselbe Datei / Inode, sodass das zu protokollierende Programm nicht gestört wird.
quelle
Sie können auch cat / dev / null> / var / log / ausprobieren. Aber ich muss warnen, dass / dev / null in einigen älteren Versionen nicht implementiert ist ...
quelle