远程会话中 screen 的使用

    有时候  ssh 时需要长时间执行命令,天寒地冻的,总不能守着吧。而且在服务器上执行,还要本地看着,不太环保,有人说本地关了 ssh 服务器上的命令就会中断,怎么办? 这时候 screen 的价值就体现出来了。

参数:
-d 断开当前会话。
-dmS name 开始一个指定名称后台运行的会话。
-D [pid.tty.host] 断开指定的会话。(只要 pid 或 name 就可以)
-ls 列出现有的会话。(只显示当前用户的会话)
-r [pid.tty.host] 重新连接会话。(只要 pid 或 name 就可以)
-v 显示版本号。
-wipe 清除死掉的会话。

在 screen 中的操作
默认使用 ctrl+a 激活 screen 控制。man screen 中 C-a 表示,这里列出一些常用的,很多操作都有不同的按键方法,自己 man screen 。
C-a ' 选择要切换的窗口
C-a " 显示全部窗口以便选择
C-a 0-9 切换到窗口0-9
C-a C-a 切换到之前显示的窗口
C-a c 创建一个新 shell 窗口并切换到该窗口
C-a C 相当于 clear
C-a d 断开
C-a D D 断开并注销
C-a k 关掉当前窗口,包括 C-a c 创建的
C-a w 在底部显示所有窗口列表
C-a space 或 C-a n 切换到下一个窗口
C-a backspace 或 C-a p 切换到上一个窗口
C-a ? 显示所以键绑定信息
C-a : 进入命令行模式
C-a [ 进入 复制/回滚 模式(和vi一样用hjkl移动光标,空格选中开始点,再次按空格选择结束点,进行复制)
C-a ] 粘帖
C-a C- 干掉所有窗口和终端(干掉后还是显示attached,但是screen -r [pid.tty.host] 会提示不可以恢复,需要screen -d 后才能再连接。)

还要一个多用户模式,可以用来做演示:
user1:
screen -S window1
ctrl+a
:multiuser on
:acladd user2
:aclchg user2 -w "#"
ctrl+a d
 
user2:
screen -r user1/window1
 
这样user1在终端上操作的步骤,user2就能看到了,而且user2去掉了"写"权限,只能看user1操作。

其中 "#"  表示全部窗口,如果要设置全部用户,就用 * 代替用户名。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据