Sie müssen die Unix-Dateisysteme verstehen, bevor Sie diese Frage beantworten können.
Das einzige, was rm
tut, ist die Dateien löschen Namen, effektiv einen Zeiger aus der Verzeichnisstruktur auf die Plattenblocks.
Wenn du rennst
ping localhost > /tmp/test.log rm /tmp/test.log
Umleitung hört nicht auf. Der Befehl läuft weiter, und Daten sammeln sich in Ihrem Festplattenbereich an. Sie haben einfach kein Recht, auf diese Daten zuzugreifen, da Sie ihren Namen gelöscht haben.
Sie können eine weitere, völlig unabhängige Datei mit dem Namen erstellen /tmp/test.log
.
Wenn Sie versuchen, die Datei abzuschneiden, werden Sie die zuvor vorhandenen Daten los. Der interne Dateideskriptor kennt jedoch die Position in der Datei, auf die er verweist, und schreibt nach dem Ende der Datei die Datei. Daher die führenden Nullen.
Wenn Sie die Umleitung "zurücksetzen" möchten, müssen Sie das ping
Programm beenden, die /tmp/test.log
Datei löschen oder abschneiden und das ping
Programm neu starten .
Sie könnten auch ein Programm wie rotatelogs
ping localhost | rotatelogs ping.out.%Y%m%d.%H%M 600
um die Protokolldatei entweder basierend auf der abgelaufenen Zeit oder der Größe der Datei zu drehen.