[LINUX] Vergessen Sie nicht, die Datei zu schließen, nur weil sie sich in einem temporären Ordner befindet

Fazit

Selbst wenn Sie den temporären Ordner löschen, wird die Datei nicht vollständig gelöscht und es wird Druck auf die Festplatte ausgeübt. Schließen Sie sie also ordnungsgemäß

Einführung: Temporärer Ordner

In Ruby können Sie problemlos einen temporären Ordner erstellen. Der Ordner verschwindet, wenn der Block endet, sodass er problemlos als Arbeitsordner verwendet werden kann.

Dir.mktmpdir('test') do |dir|
  #Dateien erstellen und öffnen
end

Fehler: Datei öffnen (nicht schließen)

Wenn Sie vergessen, es zu schließen, indem Sie es öffnen, weil es ohnehin im temporären Ordner verschwindet ....

Dir.mktmpdir('test') do |dir|
  #Dateierzeugungsprozess
  f = File.open(path)
  #Arbeit
end

Problem: Datei verschwindet nicht

Der tmp-Ordner ist leer, aber die Festplatte wird immer mehr komprimiert ... Ja, unter Linux ist der Prozess noch nicht vollständig abgeschlossen, solange er noch besteht. Sofern Sie den Rails-Server oder den Delayed Job Woker nicht neu starten und den Prozess, der das Problem behandelt, löschen, bleibt er weiterhin bestehen.

$ lsof | grep delete
bundle 23931 (Abkürzung) /tmp/test20200317-23931-cayd6g/test.pdf (deleted)

*) Im obigen Beispiel wird der Prozess 23931 erfasst, sodass er vorübergehend gelöscht wird.

Aktion: Schließen

Da die Datei freigegeben wird, wird sie dauerhaft gelöscht, wenn der temporäre Ordner gelöscht wird. Wenn Sie dies tun, müssen Sie nicht den gesamten Prozess fallen lassen

Dir.mktmpdir('test') do |dir|
  #Dateierzeugungsprozess
  File.open(path) do
    #Arbeit
  end
end

Referenz

Recommended Posts

Vergessen Sie nicht, die Datei zu schließen, nur weil sie sich in einem temporären Ordner befindet
Abrufen des Dateinamens in einem Ordner mithilfe von glob
Geben Sie die in S3 Bucket enthaltene Schlüsselliste in eine Datei aus
Ein Memo, das durch Umbenennen der Dateinamen im Ordner mit Python organisiert wird
Erstellen Sie einen Befehl zum Löschen aller temporären Dateien, die in einem bestimmten Ordner generiert wurden
Ein Shell-Skript, um sich wieder an die pipenv-Shell zu erinnern
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Verschiedene Möglichkeiten, die letzte Zeile einer CSV-Datei in Python zu lesen
So legen Sie Google Text & Tabellen in einem Ordner zusammen in einer TXT-Datei mit Python ab
[Python] Holen Sie sich die Dateien mit Python in den Ordner
So erhalten Sie die Dateien im Ordner [Python]
Speichern Sie das Objekt in einer Datei mit pickle
So lesen Sie Dateien in verschiedenen Verzeichnissen
So legen Sie einen freigegebenen Ordner mit dem Host-Betriebssystem in CentOS7 auf Virtual BOX fest
So zeigen Sie das Änderungsdatum einer Datei in C-Sprache bis zu Nanosekunden an
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Ich möchte eine Datei mit Python zufällig testen
Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
2 Möglichkeiten, alle CSV-Dateien in einem Ordner zu lesen
Fehler in rsync zum freigegebenen Ordner mount.cifs: Datei vorhanden (17)
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
[Sublime Text 2] Führen Sie immer eine bestimmte Datei im Projekt aus
Speichern Sie das Pystan-Modell und erhalten Sie eine Pickle-Datei
Ein Memorandum zur Registrierung der in Hy in PyPI geschriebenen Bibliothek
[Python] Öffnen Sie die CSV-Datei in dem von Pandas angegebenen Ordner
[Python] Ändern Sie den Namen der Bilddatei in eine Seriennummer
Es ist schwer, einen sehr einfachen Algorithmus in PHP zu schreiben
Verwendung der Methode __call__ in der Python-Klasse
So importieren Sie Dateien in Python an eine beliebige Stelle
Verarbeiten Sie die Dateien im Ordner in der Reihenfolge mit dem Shell-Skript
So generieren Sie eine Abfrage mit dem IN-Operator in Django
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
Batch-Konvertierung aller XLSX-Dateien im Ordner in CSV-Dateien
Ich werde nie vergessen, wie man ein Shell-Skript schreibt, nicht vergessen! !!
Versuchen Sie einfach, einen Webhook mit ngrok und Python zu erhalten