gnu screen的用法

本文介绍如何利用Screen工具管理远程SSH或Telnet会话,确保长时间运行的任务不会因网络中断而停止。Screen允许用户创建持久性的会话,即使客户端断开连接也能继续运行任务。文章还详细解释了Screen的基本命令和常用操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用ssh或者telnet登录远程主机后执行一些耗时的命令, 如果此时ssh或者telnet中断, 那么远程主机上正在执行的程序或者说命令也会被迫终止.

screen能够很好地解决这个问题, screen也叫虚拟终端, 可以在一个物理终端上实现多个虚拟终端的效果.

创建screen会话

# 新建一个screen
screen
# 新建一个screen并指定名称
screen -S XXX

以上命令, screen将创建一个执行shell的全屏窗口。你可以执行任意shell程序,就像在ssh窗口中那样。在该窗口中键入exit退出该窗口,如果这是该screen会话的唯一窗口,该screen会话退出,否则screen自动切退到前一个窗口。

# screen命令后跟你要执行的程序。
screen vi test.c

screen创建一个执行vi test.c的单窗口会话,退出vi将退出该窗口/会话

以上两种方式都创建新的screen会话。

在一个已有screen会话中创建新的窗口。在当前screen窗口中键入Ctrl + A, C,即Ctrl键+a键,之后再按下c键,screen 在该会话内生成一个新的窗口并切换到该窗口

断开(detach)screen会话,并重连(attach)会话

#打开一个screen窗口编辑/tmp/abc文件:
screen vi /tmp/abc

之后暂时退出做点别的事情,在screen窗口键入Ctrl + A, D,Screen会给出detached提示, 这时候可以在命令行执行其他命令

# 半个小时之后回来了,找到该screen会话:
screen -ls
There is a screen on:
        16582.pts-1.tivf06      (Detached)
1 Socket in /tmp/screens/S-root.
# 重新连接会话
screen -r 16582

这时候会显示出原来screen会话中的信息.

如果原screen还是Attached的状态, 需要用 -x 参数

# 重新连接一个还在Attached状态的screen session
screen -x 16582

 

screen的组合键操作列表

Ctrl-a ?    显示所有键绑定信息
Ctrl-a w    显示所有窗口列表
Ctrl-a C-a    切换到之前显示的窗口
Ctrl-a c    创建一个新的运行shell的窗口并切换到该窗口
Ctrl-a n    切换到下一个窗口
Ctrl-a p    切换到前一个窗口(与C-a n相对)
Ctrl-a 0..9    切换到窗口0..9
Ctrl-a a    发送 C-a到当前窗口
Ctrl-a d    暂时断开screen会话
Ctrl-a k    杀掉当前窗口
Ctrl-a [    进入拷贝/回滚模式

screen命令的参数

Options:
-4            Use IPv4.
-6            Use IPv6.
-a            Force all capabilities into each window's termcap.
-A -[r|R]     Adapt all windows to the new display width & height.
-c file       Read configuration file instead of '.screenrc'.
-d (-r)       Detach the elsewhere running screen (and reattach here).
-dmS name     Start as daemon: Screen session in detached mode.
-D (-r)       Detach and logout remote (and reattach here).
-D -RR        Do whatever is needed to get a screen session.
-e xy         Change command characters.
-f            Flow control on, -fn = off, -fa = auto.
-h lines      Set the size of the scrollback history buffer.
-i            Interrupt output sooner when flow control is on.
-l            Login mode on (update /var/run/utmp), -ln = off.
-list         or -ls. Do nothing, just list our SockDir.
-L            Turn on output logging.
-m            ignore $STY variable, do create a new screen session.
-O            Choose optimal output rather than exact vt100 emulation.
-p window     Preselect the named window if it exists.
-q            Quiet startup. Exits with non-zero return code if unsuccessful.
-r            Reattach to a detached screen process.
-R            Reattach if possible, otherwise start a new session.
-s shell      Shell to execute rather than $SHELL.
-S sockname   Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
-t title      Set title. (window's name).
-T term       Use term as $TERM for windows, rather than "screen".
-U            Tell screen to use UTF-8 encoding.
-v            Print "Screen version 4.00.03 (FAU) 23-Oct-06".
-wipe         Do nothing, just clean up SockDir.
-x            Attach to a not detached screen. (Multi display mode).
-X            Execute <cmd> as a screen command in the specified session.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值