So leeren Sie den Inhalt einer fortlaufend gestreamten Datei unter Linux


7

Ich habe das Programm mit diesem Befehl ausgeführt

command 2> sample.txt

Jetzt wächst diese Datei kontinuierlich und der Befehl wird in 5-6 Tagen beendet und ich glaube, dass die Dateigröße nicht in GB angegeben wird

Ich habe es versucht

echo "" > sample.txt Aber das macht keinen Unterschied und die Dateigröße wächst.

Ich dachte daran, Cron Job nach 1 Stunde einzurichten, um seinen Inhalt zu leeren

Wie kann ich den Inhalt der Datei leeren


Was macht cp /dev/null sample.txtdas für dich?
Bernhard

Siehe auch unix.stackexchange.com/q/46549/977 unter Unix.SE. Ich habe dort ein Perl-Programm geschrieben, mit dem Sie in Zukunft nur die letzten X Bytes der Ausgabe behalten können.
Derobert

Antworten:


2

Da die Datei von der Anwendung offen gehalten wird, können Sie sie meiner Meinung nach nicht einfach traditionell leeren. Ein bisschen googeln fand ich:

Angenommen, der Autor des Codes, der die unendliche Datei schreibt, weiß sogar ein wenig über Unix:

  1. Für diesen Prozess gibt es eine Konfigurationsdatei, die die Ausgabeprotokolldatei benennt.
  2. Der Prozess "konfiguriert" sich selbst neu, wenn er ein SIGHUP-Signal empfängt, indem er die Konfigurationsdatei erneut liest. Wenn sich der Name der Protokolldatei geändert hat, schließen Sie die alte und öffnen Sie die neue.

Dies ist so ziemlich der UNIX-Standard für ein nie endendes Logwriter-Programm.

Abgesehen davon kann ich keine offensichtliche Lösung finden, da Sie verwendet haben >und nicht >>. Beim nächsten Mal möchten Sie möglicherweise umleiten truncateoder etwas Ähnliches, um das Problem einer unendlich geöffneten Protokolldatei zu vermeiden.


Ich konnte nicht verstehen, was ich das nächste Mal tun soll, ich meine den vollständigen Befehl
user1858027

Die nie endende Datei wird durch Shell-Umleitung geschrieben, daher wird HUP leider nicht nützlich sein. Abschneiden ist nicht hilfreich, da Sie es nicht durchleiten können. Aber >>würde helfen.
Derobert

2

Alles was Sie brauchen ist:

cat / dev / null> sample.txt

oder

>sample.txt


Du meintest catnicht cp. cpwürde sich beschweren cp: missing destination file operand after `/dev/null' Try `cp --help' for more information.Außer natürlich sagte OP, er habe es bereits versucht echo "" > sample.txt, was im Grunde das gleiche ist
derobert


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.