前言
使用SSH远程连接到linux服务器的时候,由于网络原因,常常导致会话中断。如果这时候你正运行着什么程序,那就完了。没过一会程序就随着远程会话被系统kill掉了。具体原因我们不在这里深入了解了,有兴趣的同学可以看看文章最后的附录地址,里面有很详细的原因介绍。我们总不能每次运行一个命令都使用&linux后台运行)或者nohup吧,
在这里我们来认识一下十几年前就出道了的程序:screen,专门管理远程会话,让你不至于断开后中断所有的程序运行。

一、安装
我一般使用centos,所以安装命令如下:

yum install screen

使用dabian一般使用如下命令安装:

apt-get install screen

二、使用
安装完成后直接运行命令screen或者screen命令后面跟上你要执行的程序就行了。

$ screen
//或者
$ screen vi test.c

最常用到的功能就下面几条命令了

//直接运行命令,进入到screen窗口
$ screen 

//列出现有screen会话,格式为pid.tty.host
$ screen -ls
There is a screen on:
        16582.pts-1.tivf06      (Detached)

//重新连接一个断开的会话
$ screen -r 16582

//暂时断开screen会话
ctrl+a+d

有了以上这几条命令我们就可以玩转远程会话了。

三、screen窗口模式下的快捷键

C-a ?    显示所有键绑定信息
C-a w    显示所有窗口列表
C-a C-a    切换到之前显示的窗口
C-a c    创建一个新的运行shell的窗口并切换到该窗口
C-a n    切换到下一个窗口
C-a p    切换到前一个窗口(与C-a n相对)
C-a 0..9    切换到窗口0..9
C-a a    发送 C-a到当前窗口
C-a d    暂时断开screen会话
C-a k    杀掉当前窗口
C-a [    进入拷贝/回滚模式

注意:按住ctrl的同时,依次按下其它键。

四、screen命令常用参数

-c file    使用配置文件file,而不使用默认的$HOME/.screenrc
-d|-D [pid.tty.host]    不开启新的screen会话,而是断开其他正在运行的screen会话
-h num    指定历史回滚缓冲区大小为num行
-list|-ls    列出现有screen会话,格式为pid.tty.host
-d -m    启动一个开始就处于断开模式的会话
-r sessionowner/ [pid.tty.host]    重新连接一个断开的会话。
-S sessionname    创建screen会话时为会话指定一个名字
-v    显示screen版本信息
-wipe [match]    同-list,但删掉那些无法连接的会话

个人感觉最常用的也就是-ls、-r

参考(包括远程会话被结束的原因都有很详细的介绍):
https://www.ibm.com/developerworks/cn/linux/l-cn-screen/

最后编辑:2019年08月13日 ©著作权归作者所有

发表评论

正在加载 Emoji