目前我已将 gnome 终端的回滚设置(编辑 -> 配置文件首选项 -> 滚动)设置为 10000 行。我很想勾选“无限制”,但我担心这可能会导致内存崩溃(如果我让一个有大量输出的程序过夜运行,我不希望它因此而崩溃)。
我的问题是:
这些回滚行是存储在内存中,还是缓存在磁盘上的文件中?
如果我从10000变成100000或者100万,我还安全吗?我需要考虑哪些参数(RAM、可用磁盘空间、打开终端的数量)?选择无限安全吗?
根据非常有趣的博客文章,它显然存储在磁盘上已删除的文件中:
我可以看看
gnome-terminal
打开了哪些文件,这样就lsof
可以解决问题了。然后我发现它很狡猾,它有很多名为/tmp/vteXYZ1tv
open的文件,但它已经删除了它们。因此,您在浏览时看不到它们,并且当程序关闭时它们将被删除。这是有道理的,这意味着当进程关闭时,无论如何(至少我认为),文件的空间都可以回收,即我们不会在程序崩溃时获得剩余文件,或者kill -9
。不过,它们可以恢复,我的方式(可能还有其他方式)是做一个ls -l
/proc/<gnome-terminal pid>/fd
看看它们指向什么。然后你可以用cat
这些来制作一个新文件。这些只是终端输出的逐字副本。无压缩。没什么。事实证明,我的终端历史记录之一几乎有 900 MB!但这只是在随机数据在相当长一段时间内快速吐出之后发生的,在普通使用中不太可能发生。
我会再次强调这一点:海报已经运行了base64 < /dev/urandom
一段时间,寻求内存或磁盘使用量的增加 - 900MB 是特殊的使用量。