Linux screen命令
介绍
screen命令可以创建多个在后台运行的会话中,同时运行多个程序,无需打开多个终端窗口。常用于“挂起”需要长时间运行的任务(同步文件、执行脚本等),可以会话之间来回切换、稍后可以重连会话、多个用户可以连接到同一个 screen
会话,共同查看和操作程序。
基本语法
screen [ -options ] [ cmd [ args ] ]
- options:可选参数;
- cmd:可选命令,在启动会话时,直接运行这个命令;
- args:命令的参数;
会话的状态
Attached
:会话正在前台运行,有用户正在会话中;Detached
:会话正在后台运行,没有用户正在会话中;Multiuser
:会话中存在多个用户;Dead
:会话中的所有窗口都被关闭,会话已结束;Attached but not responding
:会话处于Attached
状态,由于网络或终端被意外关闭等原因,会话无法正常响应。
可选参数 | 介绍 |
---|---|
-S (session) |
创建一个自定义命名的会话 |
-d (detach) |
修改会话的状态为Detached |
-r (resume) |
重新连接会话 |
-ls 或-list |
查看全部会话 |
-x (mux) |
重新连接到一个Attached 状态的会话,并允许多个用户同时查看和操作该会话 |
-wipe |
清理Dead 状态的会话 |
-h (history lines) |
设置会话中缓存区缓存历史的行数 |
-m (mandatory) |
如果正在被其它用户使用,强行连接会话 |
快捷键
在连接会话后,可以使用快捷键的方式来操作。
快捷键 | 功能 |
---|---|
Ctrl + a |
screen 的命令前缀,所有操作都需要先按下这个组合键 |
Ctrl + a c |
创建一个新的窗口(终端会话) |
Ctrl + a n |
切换到下一个窗口 |
Ctrl + a p |
切换到上一个窗口 |
Ctrl + a 0-9 |
切换到指定编号的窗口(例如 Ctrl + a 1 切换到窗口 1) |
Ctrl + a d |
从当前会话中分离(会话仍在后台运行) |
Ctrl + a k |
关闭当前窗口 |
Ctrl + a ? |
显示所有可用的快捷键 |
Ctrl + a A |
重命名当前窗口 |
Ctrl + a : |
进入命令模式(可以输入 screen 的命令,例如 quit 退出所有窗口) |
常用功能
创建会话
直接使用screen
可创建匿名会话,不推荐使用。建议,使用自定义命名的会话:
screen -S <session_name>
暂时离开会话
快捷键:Ctrl+a d
重连会话
会话创建成功后,系统会生成一个session_id。screen支持会话名称重复,再次连接会话时,需要指定session_id
。
- 连接的会话状态是
Detached
,使用screen -r <session_name or session_id>
。 - 连接的会话状态是
Attached
,当前正有用户在会话中,有两个方式进行重连:- 中断用户的连接,然后在连接,使用
screen -dr <session_name or session_id>
。-d
表示分离当前连接,-r
表示重新连接。 - 和用户一起协作,使用
screen -x <session_name or session_id>
。
- 中断用户的连接,然后在连接,使用
退出会话
- 在会话中,使用
exit
;或者使用Ctrl + a k
; - 在会话外,使用
screen -X -S <session_name or session_id>
清理会话
如果会话已经死亡(例如程序退出或终端关闭),可以通过以下命令清理:
screen -wipe
日志记录
将会话内容保存到日志文件。使用快捷键:Ctrl+ a H
。