Freigabe von Speicherplatz ohne Beendigung eines Prozesses

Wenn Sie die Blöcke zurückfordern möchten, die einer aktiven Datei zugeordnet sind, ohne den Prozess zu beenden, müssen Sie die Ausgabe eines anderen Befehls in die Datei umleiten. Die Datenumleitung schneidet die Datei ab und gibt die belegten Speicherblöcke frei.

Wenn die aktive Datei aus dem Dateisystem entfernt wird, bleiben die der Datei zugeordneten Blöcke so lange zugeordnet, bis die letzte offene Referenz entfernt wird, indem der Prozess die Datei schließt oder der Prozess, der die Datei geöffnet hat, beendet wird. Wenn ein "Ausreißerprozess" in eine Datei schreibt und die Datei entfernt wird, werden die der Datei zugeordneten Blöcke erst dann freigegeben, wenn der Prozess beendet wird.

Beispiel:
$ ls -l
total 1248
-rwxrwxr-x      1 web   staff   1274770 Jul 20 11:19 datafile
$ date > datafile
$ ls -l
total 4
-rwxrwxr-x      1 web   staff        29 Jul 20 11:20 datafile
Die Ausgabe des Befehls date ersetzt den früheren Inhalt der Datei datafile. Die für die abgeschnittene Datei gemeldeten Blöcke spiegeln die Größendifferenz von 1248 > zu 4 wider. Wenn der Ausreißerprozess weiterhin Informationen an diese neu abgeschnittene Datei anfügt, erzeugt der nächste ls -Befehl die folgenden Ergebnisse:
$ ls -l
total 8
-rxrwxr-x       1 web   staff   1278866 Jul 20 11:21 datefile

Die Größe der Datei datafile gibt an, wie viel Daten der Ausreißerprozess angefügt hat, aber die Anzahl der zugeordneten Blöcke ist gering. Die Datei datafile enthält jetzt eine Lücke. Dateilücken sind Bereiche der Datei, denen keine Plattenblöcke zugeordnet sind.