您是否曾经遇到过在远程计算机上执行长时间运行的任务,突然连接中断,SSH会话终止以及工作丢失的情况。在本文中,我们将说明如何安装screen命令并说明如何使用screen命令,如何使用screen运行后台命令,进程与任务。
screen或GNU screen是终端多路复用器。 换句话说,这意味着您可以启动screen会话,然后在该会话中打开任意数量的窗口,也就是虚拟终端。
即使它们的窗口不可见,在Screen中运行的进程也将继续运行。
如今,大多数Linux发行版中都已预先安装screen命令。 可以运行命令screen --version
检查它是否已安装在你的Linux系统。 命令将会screen的版本信息。
如果您的系统上未安装screen,则可以使用发行版的软件包管理器轻松安装它。
如果你的计算机运行的是基于Debian的Linux发行版。 例如Ubuntu和Linux mint,可以运行命令sudo apt install screen
安装screen。
如果你的计算机运行的是基于Redhat的Linux发行版。 例如CentOS和Fedora,可以运行命令sudo apt install screen
安装screen。
sudo yum install screen #for centos and fedora
sudo apt install screen #for Ubuntu and Debian
screen --version
Screen version 4.06.02 (GNU) 23-Oct-17
启动 screen
要开始screen会话,只需在终端运行screen
命令即可。 这将打开一个screen会话,创建一个新窗口,并在该窗口中启动shell。
当您运行多个screen会话时,命名会话非常有用。 要创建命令的会话,请运行命令screen -S session_name
。
现在您已经打开了一个screen会话,你键入Ctrl+a ?
来获取命令列表。
当进入后,请键入Ctrl-a
c
,创建一个shell会话,然后就可以运行命令或者执行常驻后台任务。
如果需要退出当前screen会话时,请键入Ctrl+a
d
退出screen。 你执行任务将会一直运行。
screen
screen -S session_name #命名会话
Ctrl+a ? #获取帮助
Ctrl+a c #在screen创建shell 会话
Ctrl+a d #退出screen
screen 快捷键
当您开始新的screen会话时,它将创建一个带有shell的窗口。 screen会话中可以有多个窗口。
要创建shell会话类型的窗口键入Ctrl+a
c
,将为其分配范围0...9
中的第一个可用数字。
以下是一些用于管理screen窗口的最常用命令。 Ctrl+a
c
创建一个新窗口,包括shell会话。
Ctrl+a
"
列出所有窗口,Ctrl+a
0
切换到窗口0,Ctrl+a
A
重命名当前窗口
Ctrl+a
S
将当前窗口水平分为两个窗口,Ctrl+a
|
将当前窗口垂直分割为两个窗口。
Ctrl+a
tab
将输入焦点切换到下一个窗口,Ctrl+a
Ctrl+a
在当前窗口和上一个之间切换。
Ctrl+a
Q
关闭当前区域以外的所有窗口,Ctrl+a
X
关闭当前窗口。
您可以随时输入键入Ctrl+a d
退出screen会话,从会话断开后,在screen会话中运行的程序将继续运行。
恢复screen会话
要恢复screen会话,请运行命令screen -r
。 如果您的计算机上正在运行多个screen会话,则需要在r
选项后附加screen会话id。
要找到会话ID,请运行screen -ls
命令列出当前正在运行的screen会话。 例如要还原screen的id是10835.pts的会话,请运行命令screen -r 10835
。
screen -ls
screen -r
screen -r 10835
There are screens on:
10835.pts-0.myfreax-desktop (Detached)
10366.pts-0.myfreax-desktop (Detached)
2 Sockets in /run/screens/S-myfreax.
自定义screen
启动screen
时,如果配置文件存在,它将从/etc/screenrc
和~/.screenrc
中读取其配置参数。
我们可以在~/.screenrc
文件根据喜好修改默认的screen设置。 以下是带有自定义状态行和一些其他选项的示例配置。
# 关闭欢迎消息
startup_message off
# 关闭声音提示
vbell off
# 设置滚动的buffer
defscrollback 10000
# 自定行的状态
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %m-%d %{W}%c %{g}]'
结论
在本教程中,您学习了如何使用Gnu Screen。 现在,您可以开始使用screen程序,并通过单个会话创建多个窗口,在窗口之间导航。
退出和恢复screen会话,并使用〜/.screenrc
文件个性化您的screen终端。