Gnome终端回滚线?

目前我已将gnome终端的滚动设置(编辑 – >配置文件首选项 – >滚动)设置为10000行。 我很想勾选Unlimited,但我担心这可能会导致内存崩溃(如果我留下一个有很多输出在夜间运行的程序,我不希望它因此而崩溃)。

我的问题是:

  1. 这些回滚线是存储在内存中还是缓存在磁盘上的文件中?

  2. 如果我从10000变为100000或100万,我还安全吗? 我需要考虑哪些参数(RAM,可用磁盘空间,开放终端数量)? 选择无限安全吗?

根据非常有趣的博客文章 ,它显然存储在磁盘上已删除的文件中:

我可以看一下gnome-terminal打开了哪些文件,这样才能解决问题。 然后我发现它是偷偷摸摸的,它有一些名为/tmp/vteXYZ1tv的文件打开,但它已经删除了它们。 因此,您在浏览时无法看到它们,并且在程序关闭时它们将被删除。 这是有道理的,这意味着当进程关闭时,无论如何(至少我认为),文件的空间都可以回收,即我们不会在程序崩溃时获得剩余的文件,或者kill -9 。 它们可以恢复,我的方式(可能还有其他),是做一个ls -l /proc//fd看看它们指向的是什么。 然后你可以把它们用来制作一个新文件。 这些只是终端输出的逐字副本。 没有压缩。 没什么。 事实certificate,我的终端历史之一几乎是900 MB! 但这只是在随机数据很快就吐出很长一段时间之后,在普通用法中不太可能发生。

我将再次强调这一点:海报已经运行了base64 < /dev/urandum一段时间,寻找内存或磁盘使用量的增加 - 900MB将是特殊用途。

gnome-terminal(实际上是vte)确实将回滚存储在/ tmp下的一个立即删除的文件中(更准确地说:在受$ TMPDIR影响的标准临时文件位置下,可能还有一些类似的)。

选择此设计主要是为了无限制回滚而不会导致OOM错误。 磁盘不太可能被填满,即使发生这种情况,它对整个系统的危害也小于内存不足。

vte-0.40(最有可能出现在Ubuntu 15.10 WW中)将压缩和加密这些文件。 这会将所需的存储空间缩小到其大小的大约四分之一(如果您的应用程序以纯文本forms生成X数据量,介于X / 4之间.X / 3是对所需存储空间的合理估计) ,如果有人获得硬盘驱动器的原始访问权限,也可以摆脱隐私/安全问题。

我们计划添加一个选项来将回滚存储在内存中,就像你的/ tmp在tmpfs上一样。 如果一切按计划进行,这将出现在vte-0.42中,然后出现在Ubuntu 16.04 XX LTS中。 不过,我不能保证。