Hallo, ich habe viele Dateien, die gelöscht wurden, aber aus irgendeinem Grund kann der mit den gelöschten Dateien verknüpfte Speicherplatz nicht verwendet werden, bis ich den Vorgang für die Datei, die den Speicherplatz belegt, explizit beendet habe
$ lsof /tmp/
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
cron 1623 root 5u REG 0,21 0 395919638 /tmp/tmpfPagTZ4 (deleted)
Der von der gelöschten Datei oben belegte Speicherplatz verursacht Probleme, z. B. beim Versuch, mithilfe der Tabulatortaste einen Dateipfad automatisch zu vervollständigen. Der Fehler tritt auf bash: cannot create temp file for here-document: No space left on device
Aber nachdem ich ausgeführt habe, wird kill -9 1623
der Speicherplatz für diese PID freigegeben und ich erhalte den Fehler nicht mehr.
Meine Fragen sind:
- Warum wird dieser Speicherplatz beim ersten Löschen der Datei nicht sofort freigegeben?
- Wie kann der mit den gelöschten Dateien verknüpfte Dateibereich am besten wiederhergestellt werden?
und bitte teilen Sie mir eine falsche Terminologie, die ich verwendet habe, oder andere relevante und relevante Informationen in Bezug auf diese Situation mit.
quelle
Wie andere gesagt haben,
lsof
können hiermit alle gelöschten Dateien aufgelistet werden, die sich aufgrund offener Dateideskriptoren noch auf der Festplatte befinden. Dies kann jedoch eine sehr lange Liste sein. Hier ist ein Befehl, der diese Dateien nach aufsteigender Größe in Bytes sortiert auflistet:Es gibt vielleicht eine prägnantere Möglichkeit, dies zu tun, aber der obige Befehl hat bei mir funktioniert.
quelle
Der Speicherplatz wird nicht sofort freigegeben, da der ausgeführte Prozess noch ein offenes Dateihandle für die gerade gelöschte Datei hat. Wenn ein Prozess immer noch versucht, eine Datei zu verwenden, möchten Sie wahrscheinlich nicht, dass der Kernel sie (die Datei) entfernt. Das könnte den Prozess etwas aufregen. Der beste (und meines Wissens einzige) Weg, den Speicherplatz freizugeben, ist, genau das zu tun, was Sie getan haben - den Prozess zu beenden.
quelle
(Minze 17,1)
TL; DR:
sudo baobab
(Disk Usage Analyzer).root
den Papierkorb des Benutzers.Kontext
Ich hatte immer weniger Speicherplatz, während ich ständig Dateien löschte. Ich habe das
trash-cli
Paket installiert , um den Papierkorb zu leeren, aber das hat nicht geholfen. Schließlich bemerkte ich, dass ich beim Ausführenbaobab
(Disk Usage Analyzer in GUI, zumindest unter Mint 17.1) zur Überprüfung der Speicherplatzstruktur eine Warnung erhielt, dass auf einige Ordner nicht zugegriffen werden konnte. Also habe ich es alsroot
mit ausgeführtsudo baobab
. Dies ergab das Problem. Viele der gelöschten Dateien befanden sich im Papierkorb desroot
Benutzers, nicht meines eigenen Benutzers. So konnte ich den Platz nicht freigeben. Dann habe ich einfach den Papierkorb mit root (sudo trash-cli
) geleert und meinen gesamten Speicherplatz zurückgegeben.quelle
Versuchen Sie es mit dem folgenden Befehl
und töte dann die pid der gelöschten Datei.
quelle