xNIX/

SSH 时 Screen 的使用

发布
更新
字数
1308
阅读
3 分钟

有时候会碰到这样的情况,用 SSH 远程到一个 FreeBSD 主机进行一些操作,有时候这些操作要花很长的时间,这样就会出现一些问题,你运行 SSH 客户端的电脑就不能关了或如果出现网络中断,则当前连接就会中断,就算是你重新打开 SSH ,也只会打开一个新的 session,无法恢复之前的 session 。
这个时候,你就需要 Screen 这个工具了。它可以解决这个问题。

安装方法:

bash
cd /usr/ports/sysutils/screen
make install clean

screen 的常用参数:

bash
-A:将所有的视窗都调整为目前终端机的大小。
-d:分离指定的screen会话。
-h:指定视窗的缓冲区行数。
-m:即使目前已在会话中的screen会话,仍强制建立新的screen会话。
-r:恢复分离的screen会话。
-R:先试图恢复离线的会话。若找不到离线的会话,即建立新的screen会话。
-s:指定建立新视窗时,所要执行的shell。
-S:指定screen会话的名称。
-v:显示版本信息。
-x:恢复之前离线的screen会话。
-ls:显示目前所有的screen会话。
-list:显示目前所有的screen会话。
-wipe:检查目前所有的screen会话,并删除已经无法使用的screen会话。

screen 会话中的快捷键,先按 ctrl+a,然后再按如下:

bash
?:Help,显示按键绑定情况。
c:Create,创建新的窗口。
n:Next,切换到下个窗口。
p:Previous,切换到前一个窗口。
M:查看活动状态。
x:锁住当前的窗口,需用用户密码解锁。
d:Detach,暂时离开当前会话,此后可以恢复。
z:把当前会话放到后台执行,可以使用shell的fg命令回去。
w:Windows,列出已创建的窗口。
t:Time,显示当前时间。
K:Kill,强行关闭当前的窗口。
[0..9]:切换到第 0..9个窗口。
[Space]:由窗口0顺序切换到窗口9。
C-a:在两个最近使用的窗口间切换。
S:水平分屏。
|:垂直分屏。
X:关闭当前分屏。
Q:关闭除当前分屏的所有分屏。
[Tab]:在分屏中切换。
[:Copy,进入拷贝模式,此时可以回滚、搜索、复制,就像用使用vi一样。
]:Paste,粘贴刚刚在拷贝模式选定的内容。

当 按了 ctrl+a d 把 screen session detach 掉后,会回到还没进 screen 时的状态,此时在 screen session每个window 内跑的 process (无论是前景/背景)都在继续执行,即使 logout 也不影响.

bash
screen -ls #显示所有的 screen sessions
screen -r [keyword] #选择一个 screen session 回来,恢复离线的screen作业,单独输入 screen -r 也行的.

创建一个以 mps 命名的会话:

bash
screen -S mps

也可以在创建会话的时候,指定要执行的命令,如:

bash
screen -S mps vi test.txt

需要注意的是,如果退出 vi 也会退出 screen 会话。

应用场景:
想要时时该监视 top 和某 access.log 的情况,那就这样:

bash
# 创建以 mps 命名的会话
screen -S mps
# 进入会话后,新建一个窗口
ctrl+a,c
# 将窗口垂直分割
ctrl+a,|
# 在两个窗口间切换
ctrl+a,tab
# 分别运行命令
top
tail -f /var/log/httpd-access.log

补充说明:
screen 是一个多重视窗管理程序,此处所谓的视窗,是指一个全屏幕的文字模式画面。通常只有在使用 telnet 登入主机或是使用老式的终端机时,才有可能用到 screen 程序。

PS :
此文章有参考及引用网上文章,如涉及版权,请告知。谢~

又 PS :
听说现在更流行使用 tmux 了。不过现在这个用得还行,暂时懒得去研究了。

评论

正在载入评论…

留下评论

人机验证
四位数字,看不清可点击图片刷新

评论经审核后显示。

回到顶部 ↑