screen命令

1,088次阅读

共计 2311 个字符,预计需要花费 6 分钟才能阅读完成。

screen 其实就是 linux 虚拟终端,你可以用它创建很多虚拟终端,每个终端可以创建 1~10 个窗口,每个窗口相当于一个 linux shell 窗口,可以执行的操作和正常 shell 完全一样。

【终端操作】(需要在物理 shell 中操作)
screen:创建一个虚拟终端并且登录之
screen -ls:列出当前所有虚拟终端
screen [-d] -r sessionid:进入指定的虚拟终端

【终端中的窗口操作】(挂载某个终端)
Ctrl-a c         新建 bash screen 终端
Ctrl-a ”         列出
Ctrl-a A         重命名
Ctrl-a n         在当前窗口中切换到下一个 screen 终端
Ctrl-a p         在当前窗口中切换到上一个 screen 终端
Ctrl-a 空格      窗口切换
Ctrl+a w:窗口列表
Ctrl+a 0-9:在第 0 个窗口和第 9 个窗口之间切换
Ctrl+a K(大写):关闭当前窗口,并且切换到下一个窗口(当退出最后一个窗口时,该终端自动终止,并且退回到原始 shell 状态)
exit:关闭当前窗口,并且切换到下一个窗口(当退出最后一个窗口时,该终端自动终止,并且退回到原始 shell 状态)

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 ]             粘贴选择的内容

【友情提醒】

.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

常用快捷键

注:这些快捷键都需要在按完 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 的命令行

另外要提到的 几个常用技巧

  1. 重复 escape 键可以在当前窗口与上一个窗口之间迅速切换。例如从窗口 1 按 ^Z3 切换到窗口 3,之后可以按 ^Z^Z 在窗口 1 和 3 之间切换。
  2. 窗口分割的用法:首先按 ^ZS(S 要大写)进行分割,然后用 ^Z<TAB> 切换到分割出的新屏幕,再用 ^Z< 数字 > 在新屏幕内切换窗口。结束分割可以用 ^ZX。
  3. 翻页:用了 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 即可。

正文完
 
Blood.Cold
版权声明:本站原创文章,由 Blood.Cold 2016-09-17发表,共计2311字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。