screen 使用方法详解
Ctrl-a c 新建 bash screen 终端
Ctrl-a " 列出
Ctrl-a A 重命名
Ctrl-a n 在当前窗口中切换到下一个 screen 终端
Ctrl-a p 在当前窗口中切换到上一个 screen 终端
Ctrl-a d 断开所有 screen 终端,返回 screen 执行前状态,但 screen 内所有终端的任务都在执行
screen -ls 列出当前用户的所有 screen 实例,包括联接和断开的
screen -R <pid> 重新联接到已断开的 screen 实例,如果有多个已断开的 screen 实例,则用 <pid> 区分
Ctrl-a S 新建水平分割窗口
Ctrl-a Tab 切换窗口
Ctrl-a X 关闭当前窗口
Ctrl-a + 扩大当前窗口,默认增加3行
Ctrl-a - 缩小当前窗口,默认减小3行
Ctrl-a :screen <command> 新建 screen 终端,并运行命令<command>
Ctrl-a :resize <height> 改变当前窗口高度为<height>
Ctrl-a :quit 退出 screen,将关闭所有 screen 终端,结束其中所有任务
Ctrl-a <Esc> 进入选择模式
<PageUp> 或 Ctrl-u 光标上移一页
<PageDown> 或 Ctrl-d 光标下移一页
<Left> 或 h 光标左移一格
<Down> 或 j 光标下移一行
<Up> 或 k 光标上移一行
<Right> 或 l 光标右移一格
<Space> 选择开始,选择结束
<Esc> 退出选择模式
Ctrl-a ] 粘贴选择的内容
[screen:]
* 用screen -dmS session_name 来建立一个处于断开模式下的会话(并指定其会话名)。
* 用快捷键CTRL-a d 来暂时断开当前会话。
* 用screen -r session_name 来重新连接指定会话。
screen -x session_name 连接一个非断开模式的会话
* 用screen -list 来列出所有会话。
C-a ? 显示所有键绑定信息
C-a w 显示所有窗口列表
C-a K ==exit 杀掉当前窗口
C-a c 创建一个新的运行shell的窗口并切换到该窗口
C-a C-a 切换到之前显示的窗口
C-a n 切换到下一个窗口
C-a p 切换到前一个窗口
C-a 0..9 切换到窗口0..9
C-a a 发送 C-a到当前窗口
C-a [ 进入拷贝/回滚模式
-list|-ls 列出现有screen会话,格式为pid.tty.host
-wipe [match] 同-list,但删掉那些无法连接的会话
-d|-D [pid.tty.host] 不开启新的screen会话,而是断开其他正在运行的screen会话
-r sessionowner/ [pid.tty.host] 重新连接一个断开的会话。多用户模式下连接到其他用户screen会话需要
指定sessionowner,需要setuid-root权限
-h num 指定历史回滚缓冲区大小为num行
Unix中的screen是个多元化多功能的全屏窗口管理器,习惯了你会觉得它比windows的任务栏好用多了。
下面是.screenrc文件,仅供参考。
#
# ~/.screenrc## 启动时不显示欢迎屏幕
startup_message off
# 定义screen的功能键为Ctrl-Z。向终端输入Ctrl-Z时应按 Ctrl-Z z。
escape ^Zz
# 屏幕缓冲区 1024 行。
defscrollback 1024
# 在最下一行显示窗口列表和时钟
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rY}%n %t%{-}%+w %=%{..G} %H(%l) %{..Y} %Y/%m/%d %c:%s "
# 关闭错误提示
vbell off
# 按 Ctrl-Z w 或 Ctrl-Z Ctrl-W 显示窗口列表
bind w windowlist -b
bind ^w windowlist -b
常用快捷键
注:这些快捷键都需要在按完 escape 键之后使用。默认的escape键是 Ctrl-A,上面贴出的 .screenrc 中将其改成了 Ctrl-Z。例如 d,实际操作时应当按 Ctrl-Z d。
快捷键功能
d 中断当前会话,下次可以用 screen -r 命令恢复
c 开新窗口
0-9数字 在窗口0-窗口9之间迅速切换
n 下一个窗口
p 上一个窗口
S 分割屏幕
TAB 在分割的屏幕之间切换
X 关闭分割出的屏幕
[ 进入复制模式,用hjkl移动光标,空格选中开始点,再次按空格选择结束点,进行复制
] 粘贴
? 帮助
: 进入screen的命令行
另外要提到的几个常用技巧:
重复 escape 键可以在当前窗口与上一个窗口之间迅速切换。例如从窗口1按^Z3切换到窗口3,之后可以按^Z^Z在窗口1和3之间切换。
窗口分割的用法:首先按^ZS(S要大写)进行分割,然后用^Z<TAB>切换到分割出的新屏幕,再用^Z<数字>在新屏幕内切换窗口。结束分割可以用^ZX。
翻页:用了screen之后就不能用平常的 Shift-PageUp 和 Shift-PageDown 来翻页。可以按 ^Z[ 进入复制模式,即可利用与 vi 相同的快捷键来翻页查看历史。最后按Esc取消复制模式。
关于 escape 键的选择:默认的Ctrl-A与vi的增1功能冲突。如果你不幸习惯了Ctrl-A,那么当你在没有screen的环境下使用vim时,你会在不经意之间按下Ctrl-A而改变附近的数字。因此最好改成别的键。
常用的screen快捷键都在左手,因此escape应当放在键盘的左面三列。Ctrl-Q和Ctrl-S被终端使用无法绑定,Ctrl-` screen不支持,Ctrl-W与vim的切换窗口命令冲突,Ctrl-D与vim的翻页冲突, Ctrl-X与vim的减1功能冲突,Ctrl-E与vim的滚屏冲突,Ctrl-C为很常用的中止程序。因此只能用Ctrl-Z了。Ctrl-Z用于暂停程序,不常用,可以将其设置为screen的escape键。需要暂停程序时按 Ctrl-Z z 即可.