Gnome 终端回滚线?

bec*_*cko 6 gnome-terminal

目前我已将 gnome 终端的回滚设置(编辑 -> 配置文件首选项 -> 滚动)设置为 10000 行。我很想勾选“无限制”,但我担心这可能会导致内存崩溃(如果我让一个有大量输出的程序过夜运行,我不希望它因此而崩溃)。

我的问题是:

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

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

mur*_*uru 6

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

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

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

  • 看起来这些现在已经加密了(请参阅上面博客文章的评论)。 (2认同)