前言


在Linux中,我们经常会做一些关于数据的操作(备份、传输、压缩等)或是要在后台持续的运行一些程序。由于,工作的数据量很大或者工作要持续很长的时间,我们就必须保证这个终端的启动,一旦终端关闭了,它所运行的进程也会关闭,我们所做的工作就可能前功尽弃。但是,即使我们不主动的关闭终端,终端有的时候也会应为一些原因(网络、锁屏等)而中断,导致我们的工作进度清零。

这时我们就需要使用screen命令了。



screen命令的优点


支持会话恢复

当我们开启screen后,只要screen进程没有终止,其内部运行的会话都可以恢复。网络连接中断临时,用户也可以进入开启的screen中,对中断的会话的进行控制(恢复或删除)。
通常的用法是在暂时离开的时候,让在screen中运行的会话保持正常运行并将Screen切换到后台。


支持多窗口

当使用screen时,可以开启多个窗口,让每个会话都独立运行到不同的窗口,并拥有各自的编号、名称等。用户可以通过这些编号及名称进入不同的窗口。


会话共享

Screen可以让一个或多个用户从不同终端登录一个会话,并共享会话。使用户登陆同一会话的用户看到同一会话内容。
同时它可以提供窗口访问权限的设置,对窗口进行密码保护。



screen的参数


-A            将所有的视窗都调整为目前终端机的大小
-d            将指定的screen作业离线
-h            指定视窗的缓冲区行数
-m             即使目前已在作业中的screen作业,仍强制建立新的screen作业
-r             恢复离线的screen作业
-R            先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业
-s            指定建立新视窗时,所要执行的shell
-S             指定screen作业的名称
-v            显示版本信息
-x            恢复之前离线的screen作业
-ls或-list    显示目前所有的screen作业
-wipe         检查目前所有的screen作业,并删除已经无法使用的screen作业


screen最常用操作


screen启动后,会创建第一个窗口,默认窗口screen 0(从0开始)

外观上看,就像是开了一个新的终端。


<1>新建一个作业
(指定名字是为了便于区分)

screen -S 作业名称


<2>列出当前所有的作业
(会出现作业对应的序号)

screen -ls


<3>回到某个作业中

screen -r 作业序号


<4> 远程结束某个作业

screen -d 作业名称


<5>结束当前的这个作业并回到某个作业中

screen -d -r 作业名称



screen中的命令用法


C-a 意为Ctrl + a


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 [	    进入拷贝/回滚模式


注意


退出screen的作业时,有两种方式:

Crtl + a +d     保存进程并退出作业(程序在screen中继续运行,screen -ls 可查看)

exit            退出作业和进程(程序终止,screen -ls 不可查看)
Logo

更多推荐