linux使用screen管理远程会话
前言
使用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/