在Linux环境中,screen
是一个非常实用的终端多路复用工具,它可以让你在一个终端窗口中同时运行多个会话,并且能够在不同会话之间切换。screen
使得你可以保持任务在后台运行,甚至在断开 SSH 连接后,依然能够继续执行这些任务。
1. 安装 screen
大多数Linux发行版默认都提供了 screen
软件包。如果你的系统上没有安装,可以使用如下命令进行安装:
Debian/Ubuntu 系统:
sudo apt-get install screen
CentOS/RHEL 系统:
sudo yum install screen
Arch 系统:
sudo pacman -S screen
2. 启动 screen
运行 screen
时,它会启动一个新的会话,并将你带入一个新的虚拟终端。基本的启动命令如下:
screen
此时,你会进入一个新的会话,你可以在这个会话中运行任何命令。你可以通过按下 Ctrl+A
再按 C
来创建一个新的虚拟终端。每个虚拟终端都有自己的命令行。
3. 基本命令和操作
创建新会话
按下 Ctrl+A
然后按 C
,这将创建一个新的窗口,你可以在新窗口中继续执行命令。
切换会话
- 切换到下一个窗口:
Ctrl+A
然后按N
(next) - 切换到上一个窗口:
Ctrl+A
然后按P
(previous) - 切换到指定窗口:
Ctrl+A
然后按数字键(0-9)
分离会话
如果你想将会话挂起,并返回到主终端,使用以下命令:
Ctrl+A d
这会把当前会话分离(detach),你可以在后续任何时候重新连接到它。
恢复会话
要恢复一个已经分离的会话,使用:
screen -r
如果有多个会话,你需要指定会话ID:
screen -r <会话ID>
关闭会话
要关闭当前会话,可以直接退出会话中的 shell(例如 exit
或 Ctrl+D
)。会话关闭后,所有在该会话中运行的程序都会停止。
4. 常用参数说明
screen
有很多强大的选项,下面是一些常用的参数及其解释:
启动会话时指定名称
你可以为会话指定一个名称,这样可以更容易地管理多个会话:
screen -S mysession
该命令将启动一个名为 mysession
的会话。
列出所有会话
查看当前所有的 screen
会话:
screen -ls
输出类似于:
There are screens on:
1234.mysession (Detached)
5678.othersession (Detached)
2 Sockets in /var/run/screens/S-user.
连接到特定会话
如果你有多个会话,可以通过以下命令连接到指定的会话:
screen -r <会话ID>
创建会话并执行命令
你可以创建一个会话并同时执行命令:
screen -S mysession bash -c "your-command"
这将在 mysession
会话中执行指定的命令。
持久化运行命令
你可以通过 -d -m
参数让 screen
在后台运行一个命令:
screen -d -m your-command
这会在后台启动一个 screen
会话并执行 your-command
。
进入已分离的会话
当会话被分离后,想要重新连接到这个会话可以使用:
screen -r mysession
5. 配置文件
screen
提供了配置文件功能,可以在文件 .screenrc
中指定个性化设置。你可以在用户的主目录下创建这个文件,或者在 /etc/screenrc
中设置系统级别的配置。
常见的配置选项包括:
设置默认窗口的标题:
hardstatus alwayslastline "%{= kG}%-Lw%{= kY}[%n] %t%{-}%+Lw%{= kG}"
自动启动某些命令:
screen -t mysession bash -c "echo Hello World"
6. 高级功能
分屏功能
screen
允许你在一个窗口中分割出多个视图,类似于 tmux。
- 水平分割:
Ctrl+A
然后按S
(split horizontally) - 垂直分割:
Ctrl+A
然后按|
(split vertically) - 切换分屏:
Ctrl+A
然后按Tab
(toggle between splits) - 关闭分屏:
Ctrl+A
然后按X
(close split)
设置窗口日志
screen
允许你在运行的会话中记录日志,命令如下:
Ctrl+A H
这会将屏幕内容保存到 screenlog.0
文件中,默认保存在当前目录。
7. 退出 screen
在 screen
中,退出的方法有两种:
- 在当前会话中使用
exit
命令,或者按下Ctrl+D
退出 shell 会话; - 在
screen
内部按下Ctrl+A
然后按K
,这将关闭当前窗口。
如果你已经分离了会话,使用 screen -r
重新连接后也可以通过退出会话关闭会话。
评论 (0)