Gnome 終端回滾線?

Gnome 終端回滾線?

目前我已將 gnome 終端機的回滾設定(編輯 -> 設定檔首選項 -> 捲動)設定為 10000 行。我很想勾選“無限制”,但我擔心這可能會導致記憶體崩潰(如果我讓一個有大量輸出的程式過夜運行,我不希望它因此而崩潰)。

我的問題是:

  1. 這些回滾行是儲存在記憶體中,還是快取在磁碟上的檔案中?

  2. 如果我從10000變成100000或100萬,我還安全嗎?我需要考慮哪些參數(RAM、可用磁碟空間、開啟終端機的數量)?選擇無限安全嗎?

答案1

根據非常有趣的說法,它顯然儲存在磁碟上已刪除的檔案中部落格文章:

我可以看看gnome-terminal開啟了哪些文件,這樣就lsof可以解決問題了。然後我發現它很狡猾,它有很多名為/tmp/vteXYZ1tvopen的文件,但它已經刪除了它們。因此,您在瀏覽時看不到它們,並且當程式關閉時它們將被刪除。這是有道理的,這意味著當進程關閉時,無論如何(至少我認為),文件的空間都可以回收,即我們不會在程式崩潰時獲得剩余文件,或kill -9。不過,它們可以恢復,我的方式(可能還有其他方式)是做一個ls -l /proc/<gnome-terminal pid>/fd看看它們指向什麼。然後你可以用cat這些來製作一個新檔案。這些只是終端輸出的逐字副本。無壓縮。沒什麼。事實證明,我的終端歷史記錄之一幾乎有 900 MB!但這只是在隨機資料在相當長一段時間內快速吐出之後發生的,在普通使用中不太可能發生。

我會再次強調這一點:海報已經運行了base64 < /dev/urandom一段時間,尋求內存或磁碟使用量的增加 - 900MB 是特殊的使用量。

答案2

gnome-terminal(實際上vte)確實將回滾儲存在立即刪除的檔案中(更準確地說:在受可能一些類似檔案/tmp影響的標準暫存檔案位置下)。$TMPDIR

選擇這種設計主要是為了無限回滾而不導致 OOM 錯誤。磁碟被填滿的可能性要小得多,即使發生這種情況,它對整個系統的危害也比記憶體不足造成的危害要小。

vte-0.40(很可能出現在 Ubuntu 15.10 WW 中)將壓縮和加密這些檔案。這會將所需的儲存空間縮小到其大小的大約三分之一到四分之一(如果您的應用程式以純文字形式產生X 數量的數據,則X/4 .. X/3 之間的某個位置是所需儲存空間的合理估計) ,並且還消除了隱私/安全問題,以防有人獲得對硬碟的原始存取權限。

我們計劃添加一個選項來將回滾存儲在內存中,幾乎與您/tmptmpfs.如果一切按計劃進行,這將vte-0.42依次出現在 Ubuntu 16.04 XX LTS 中。但我不能保證。

相關內容