linux禁止screen打开会话时改变窗口大小

问题来源

  在后台运行程序时,经常需要常驻后台。现有的terminal一旦断线程序就会结束,screen提供了一个远程保持会话的机会,将程序运行在screen打开的会话中,重新登录上远程服务器后,可以恢复到原来的会话。类似的工具还有tmux。
  screen在使用过程中,因为远程会话窗口具有标准大小,因而会改变terminal终端的大小,在使用过程中窗体大小突然变了,非常烦。根据博主的经验,在xshell中不会发生这个问题,但是在zoc, putty, securecrt等工具中会出现。

解决方案

从终端入手

  部分终端提供了拒绝改变远程窗口大小的设置,xshell不受影响应该也是类似的原因。在putty中,可以通过菜单项来进行配置:

 Configuration -> Terminal -> Features -> Disable remote-controlled terminal resizing

  其他终端应该也有类似的设置,这个需要去查询相应的文档了。

从screen配置入手

  如果不知道怎么从终端解决,可以修改服务器上的screen设置。博主使用的是ubuntu 16.04系统,打开screen的配置文件/etc/screenrc,其中有一行内容如下:

termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

在xterm后面加上一个星号即可。

termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

然后,使用screen打开新窗口或者连接旧窗口,窗口大小即不会发生变化。

  这个办法的好处在于修改后无论哪个终端都不会有问题,麻烦的地方在于只能挨个去修改服务器配置。

其他screen相关命令

  博主使用screen主要是后台长时间跑程序,所以这里记一些常见的命令。

查看正在运行的窗口

screen -ls

如下是一个示例
在这里插入图片描述
其中10594和10582分别是两个会话id,10594指定了一个便于记忆的名称test。

打开新窗口

//打开一个新窗口
screen

//打开一个名为test的新窗口
screen -S test

连接到一个正在运行的窗口

//通过id连接
screen -r 10594

//通过名称连接
screen -r test

将会话置于后台

有时间需要临时退出会话,即detach, 可以用以下快捷键。此时,会话仍以当前状态在后台运行,可以通过screen -r 重新连接。

Ctrl + a + d

中止会话

在会话中敲入exit命令就可以退出会话,此时会话结束,不可重新连接。

exit

在会话中滚动屏幕

会话中展示的屏幕高度有限,有时间经常需要往回查找之前执行的命令和结果。此时可以通过以下命令进入copy mode。在copy mode下可以使用vi的一些基本命令,例如j/k上下滚动,Ctrl+b/f 翻页等其他操作,通过Esc退出copy mode。

Ctrl + a + [

通过这些命令,就可以满足screen后台跑程序的基本功能。当然,screen的用法不止如此,有兴趣的同学可以继续探索。

参考

CentOS 6下禁止运行screen 或建立新窗口时更改窗口尺寸
解决SSH远程登录后屏幕尺寸不对的问题
Linux Screen command resizing Putty terminal window.
Screen下如何滚动窗口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章