Wie lösche ich den Inhalt einer error.log-Datei, aber lasse die Datei intakt?

25

Ich möchte den Inhalt der Datei error.log (Nginx-Fehlerprotokolldatei) löschen, möchte die Datei jedoch nicht wirklich löschen.

Ist das möglich?

Ubuntu ausführen

user27449
quelle

Antworten:

67

Sie können dies verwenden:

>error.log

(einfach so getippt - eine leere Ausgabeumleitung)

oder

truncate -s0 error.log
Bis auf weiteres angehalten.
quelle
@Ignacio: Wenn die Datei bereits vorhanden ist, wird sie von beiden abgeschnitten. Wenn die Datei nicht existiert, wird sie von beiden erstellt.
Bis auf weiteres angehalten.
Du hast recht, meine schlechte.
Ignacio Vazquez-Abrams
Die letzte Option hat bei mir funktioniert, aus irgendeinem Grund hat sudo> error.log bei mir nicht funktioniert (ubuntu 12.04)
davidkonrad
5
@davidkonrad: Sie müssten bereits root sein, damit die Umleitung funktioniert, da sie ausgeführt wird, bevor sie sudowirksam wird. Oder Sie können tunsudo bash -c '>error.log'
bis auf Weiteres angehalten.
1
@ divHelper11: In meiner Antwort sage ich, es ist eine "leere Ausgabeumleitung". Das bedeutet, dass "nichts" an die angegebene Datei gesendet wird und dass vorhandene Inhalte überschrieben werden. Es ist ähnlich wie, echo "some words" > output.txtaber es
passiert
1

Sie werden den Dämon verwirren. Löschen Sie die Datei und senden Sie sie SIGHUPan nginx.

Ignacio Vazquez-Abrams
quelle
SEUFZEND? Kann ich nginx nicht herunterfahren, die Datei löschen und dann starten? Ich möchte wissen, wie man die Datei aus Wissensgründen auch löscht.
User27449
Wenn du wolltest, sicher. Aber das würde den Service stören.
Ignacio Vazquez-Abrams
Ich denke, sowohl eine Null-Umleitung als auch eine truncatesind atomar, so lange keine Suche stattfindet (insbesondere, wenn die einzige Operation, die stattfindet, das Anhängen ist), sollte es nicht störend sein.
Bis auf weiteres angehalten.