GNU's Screen 官方站点:http://www.gnu.org/software/screen/
【背景】
在做一个大体积的数据备份时,在远程终端上直接运行备份脚本back.sh,或运行back.sh&放到后台运行,此时关闭远程终端,或网络断开都会让命令停止运行。此时就要使用到screen命令。用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口一样。
【快速一瞥】
1.使用指令screen -S name 打开新窗口,输入程序运行后,使用快捷键Ctrl+A+D,关闭窗口即可实现程序的后台运行。
2.要想重现窗口,使用指令screen -r name。
3.要想关闭后台进程,先使用screen -ls查看所有后台窗口,从中可以看到进程号,再使用kill 进程号关闭进程。
4. 如果想关闭screen会话,使用exit命令
【命令详情】
1. 安装 screen
CentOS/RedHat/Fedora下:# yum -y install screen
Ubuntu/Debian下:# apt-get-y install screen
2. 语法
# screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
参数说明
参数说明
-A 将所有的视窗都调整为目前终端机的大小。
-d <作业名称> 将指定的screen作业离线。
-h <行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S <作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
3. 常用的 screen 命令
// 直接在命令行键入screen命令,会创建一个全新的shell窗口
screen
// 新建一个名叫 test 的session,并马上进入
screen -S test
// 创建一个名叫 test 的session,但暂不进入,可用于系统启动脚本里
screen -dmS test
// 列出当前所有session
screen -ls
// 接入(attach)或者恢复一个名为test会话
screen -r test
// 远程离线(detach) test 会话
screen -d test
// 脱离(detach)当前会话,将目前的 screen session (可能含有多个 windows) 丢到后台执行
CTRL+a ,然后 +d
//查看 screen 版本号
screen -v
// 如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。使用screen -wipe命令清除该会话:
screen -wipe