雨林的Blog - Screen
type: channel
link: https://www.tok9.com/tag/Screen/
items: SSH远程会话管理工具 - screen使用教程

SSH远程会话管理工具 - screen使用教程
type: item
date: 2018-01-04T19:39:00+08:00
description: 前言在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开始)外观上看，就像是开了一个新的终端。新建一个作业(指定名字是为了便于区分)screen -S 作业名称如：screen -S test 创建一个名字为test的作业列出当前所有的作业（会出现作业对应的序号）screen -ls[root@localhost ~]# screen -ls There is a screen on: 3985.test (Detached) 1 Socket in /var/run/screen/S-root.回到某个作业中screen -r 作业序号或者名称screen -r 3985 #回到序号为3985的作业中 或者 screen -r test #回到名称为test的作业中远程结束某个作业screen -d 作业名称screen -d test结束当前的这个作业并回到某个作业中screen -d -r 作业名称screen -d -r testscreen中的命令用法C-a 意为Ctrl + aC-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 不可查看)当screen只有一个的时候，可以使用screen -x直接跳转，不用指定screen -r new_name跳转 当进入到screen下可以使用ctrl+a+d 跳出当前screen，使用ctrl+a+k杀死当前screen screen下使用ctrl+a进入命令模式