Derzeit habe ich die Scrollback-Einstellung des Gnome-Terminals (Bearbeiten -> Profileinstellungen -> Scrollen) auf 10.000 Zeilen eingestellt. Ich bin versucht, Unbegrenzt anzukreuzen, aber ich habe Angst, dass dies zu Speicherabstürzen führen könnte (wenn ich ein Programm mit viel Ausgabe über Nacht laufen lasse, möchte ich nicht, dass es deswegen abstürzt).
Meine Fragen sind:
Werden diese Scrollback-Zeilen im Speicher abgelegt oder in einer Datei auf der Festplatte zwischengespeichert?
Wenn ich von 10000 auf 100000 oder auf 1 Million wechsle, bin ich dann immer noch sicher? Welche Parameter (RAM, freier Speicherplatz, Anzahl offener Terminals) muss ich berücksichtigen? Ist die Auswahl von Unbegrenzt sicher?
Antwort1
Es ist anscheinend in gelöschten Dateien auf der Festplatte gespeichert, nach sehr interessantenBlogeintrag:
Ich konnte einfach nachsehen, welche Dateien
gnome-terminal
geöffnet waren, alsolsof
zur Rettung. Dann merkte ich, dass es hinterhältig war, es hatte eine Reihe von Dateien mit dem Namen „/tmp/vteXYZ1tv
open“, aber es hatte sie bereits gelöscht. Daher können Sie sie beim Durchsuchen nicht sehen und sie werden entfernt, wenn das Programm geschlossen wird. Das ist sinnvoll, denn es bedeutet, dass, wenn der Prozess geschlossen wird, es spielt keine Rolle wie (zumindest denke ich das), der Speicherplatz der Dateien zurückgewonnen werden kann, d. h. wir bekommen keine übrig gebliebenen Dateien bei einem Programmabsturz oder einemkill -9
. Sie können jedoch wiederhergestellt werden, meine Methode (es gibt wahrscheinlich auch andere) bestand darin, ein auszuführen,ls -l
/proc/<gnome-terminal pid>/fd
um zu sehen, worauf sie verweisen. Dann können Siecat
diese verwenden, um eine neue Datei zu erstellen. Dies sind nur eine wortgetreue Kopie der Terminalausgabe. Keine Komprimierung. Nein, nichts. Wie sich herausstellte, war einer meiner Terminalverläufe fast 900 MB groß! Aber das war nur, nachdem eine ganze Weile lang sehr schnell zufällige Daten ausgespuckt wurden, was bei normaler Verwendung unwahrscheinlich ist.
Und ich betone es noch einmal: Der Poster war base64 < /dev/urandom
eine Zeit lang aktiv und suchte nach einer Erhöhung der Speicher- oder Festplattennutzung – 900 MB wären eine außergewöhnliche Nutzung.
Antwort2
gnome-terminal
(tatsächlich vte
) speichert den Scrollback tatsächlich in einer sofort gelöschten Datei unter /tmp
(genauer: unter dem von beeinflussten Standardspeicherort für temporäre Dateien $TMPDIR
und vielleicht einigen ähnlichen).
Dieses Design wurde hauptsächlich gewählt, um durch unbegrenztes Scrollback keine OOM-Fehler zu verursachen. Es ist viel unwahrscheinlicher, dass die Festplatte voll wird, und selbst wenn das passiert, ist es für das gesamte System weniger schädlich als ein Speichermangel.
vte-0.40
(das höchstwahrscheinlich in Ubuntu 15.10 WW erscheinen wird) komprimiert und verschlüsselt diese Dateien. Dadurch wird der erforderliche Speicherplatz auf etwa ein Drittel bis Viertel seiner Größe reduziert (wenn Ihre App eine bestimmte Menge an Daten als Klartext erzeugt, ist irgendwo zwischen X/4 und X/3 eine vernünftige Schätzung für den erforderlichen Speicherplatz) und außerdem wird das Datenschutz-/Sicherheitsproblem beseitigt, falls jemand unverschlüsselten Zugriff auf die Festplatte erhält.
Wir planen, eine Option hinzuzufügen, um den Scrollback im Speicher zu speichern, so als ob Ihr /tmp
eingeschaltet wäre tmpfs
. Wenn alles nach Plan läuft, wird dies in vte-0.42
und anschließend in Ubuntu 16.04 XX LTS erscheinen. Ich kann es jedoch nicht versprechen.