这个问题纯粹是出于好奇;没有问题需要解决。
注意:我在CentOS 7上使用Konsole。
当我通过SSH连接到远程控制台并使会话暂停一段时间时,它会超时。作为解决方法,我使用less [some-file]
来保持会话处于活动状态。
显然,当我在一天结束时暂停VM时,会话仍会中断。
第二天,当我开始一个新的SSH会话时,一切正常除了一些Konsole功能不起作用(即清除回滚,我经常使用)用于同一个终端窗口用于SSH会话。
然而,在我less
文件并退出之后,会发生两件事:
less
之前终端中输出的内容被前一天的任何输出替换,在会话被关闭之前关闭我正在进行SSH连接的VM。奇怪的是,这发生在所有~4个并发终端/会话中(每个终端/会话都恢复了前一天的输出)。 [编辑:澄清:当我在特定终端中使用SSH / less时,每个~4个终端都表现出这种行为。每个人从前一天恢复其输出。在一个终端/会话中执行此操作不影响其他终端/会话]
我认为任何具有自己的“gui”的终端应用程序(例如vi,nano等)都会发生这种情况,并不是less
特有的。
似乎有一些缓存正在进行中。我假设退出less
(或vi,nano等)会触发一般的shell输出恢复,但这种特殊的表现似乎有点奇怪。
知道发生了什么事吗?
答案 0 :(得分:1)
备用屏幕功能(最初为xterm
)问题中描述的终端功能,但由其他几个终端(包括konsole
)复制/模仿)。根据终端描述,您可能/可能不使用此功能。
less
并且大多数全屏终端程序(例如vi
)发送转义序列以切换到备用屏幕,如果它们在终端描述中定义(即{{1} }})。
根据说明,听起来好像您在TERM=xterm
的同一个实例中使用不同的标签,并且记住您的终端设置为备用屏幕。 konsole
和其他一些程序试图保存/恢复"会话"暂停时的信息,这可能是保存/恢复的好东西。
在备用屏幕中,终端程序通常很少或根本无法访问回滚区域。
您可以使用konsole
发送相同的转义序列(不运行tput
):
less
(如果终端说明
进一步阅读: