screen命令

发布于:2025-08-28 ⋅ 阅读:(12) ⋅ 点赞:(0)

screen 是一个强大的终端多路复用器,允许你在单个终端会话中运行多个进程,并且可以在断开连接后重新连接,非常适合远程工作。以下是 screen 命令的详细说明:


一、基本概念

  • 会话 (Session): 一个 screen 实例,可以包含多个窗口。
  • 窗口 (Window): 一个会话中的独立终端环境,每个窗口运行一个命令。
  • 分离 (Detach): 断开与当前 screen 会话的连接,但会话仍在后台运行。
  • 重连 (Attach): 重新连接到一个已分离的 screen 会话。

二、启动 Screen

命令 说明
screen 启动一个新的 screen 会话,使用默认名称。
screen -S <会话名> 启动一个命名的 screen 会话。例如:screen -S mysession
screen -dmS <会话名> <命令> 启动一个分离的 screen 会话,并立即在其中运行指定的命令。例如:screen -dmS backup tar -czf backup.tar.gz /data

三、Screen 内部命令(在 screen 会话中使用)

所有内部命令都以 Ctrl + a 开头,然后按相应的键。

命令 (按 Ctrl + a 后) 说明
c 创建一个新的窗口。
n 切换到下一个窗口。
p 切换到上一个窗口。
<数字> 切换到指定编号的窗口(例如 012...)。
" 列出所有窗口,可选择切换。
w 显示所有窗口的列表(在状态栏)。
k 杀死当前窗口(相当于 exit)。
d 分离 (Detach) 当前 screen 会话,回到原始 shell。
D 分离并退出 screen 会话。
A 重命名当前窗口。
S 水平分割当前区域。
` V`
tab 在分割的区域间切换。
x 锁定屏幕(需要输入密码解锁)。
? 显示帮助信息(所有可用命令)。
[ 进入复制/滚动模式。
] 粘贴之前复制的内容。
: 进入命令行模式,可以输入更复杂的 screen 命令。

四、管理 Screen 会话(在普通 shell 中使用)

命令 说明
screen -ls 或 screen -list 列出所有正在运行(或分离)的 screen 会话。
screen -r <会话ID或会话名> 重新连接 (Attach) 到一个已分离的会话。例如:screen -r 12345.mysession 或 screen -r mysession
screen -r <会话ID> 如果会话正在被其他终端占用,尝试连接。
screen -x <会话名> 多路复用 (Attach) 到一个会话,允许多个用户/终端同时查看同一个会话(非常适合协作)。
screen -R <会话名> 如果会话存在则重新连接,如果不存在则创建一个新的。
screen -d -r <会话名> 先分离(detach)该会话(如果它被其他地方连接着),然后重新连接。
screen -S <旧会话名> -X quit 终止指定名称的 screen 会话。
screen -S <会话名> -X screen <命令> 在指定的 screen 会话中创建一个新窗口并运行命令。
screen -S <会话名> -p <窗口号> -X kill 杀死指定会话中的指定窗口。

五、配置文件

screen 的配置文件是 ~/.screenrc。你可以在这里设置默认行为。

常用配置示例 (~/.screenrc):


Bash

深色版本

# 设置状态栏(硬状态线)
hardstatus alwayslastline "%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]"

# 启用256色
term screen-256color

# 设置默认 shell
shell /bin/bash

# 启用滚动历史记录
defscrollback 5000

# 设置窗口标题自动更新
autodetach on

六、实用技巧

  1. 防止会话意外终止: 使用 screen -S <name> 命名会话,便于管理和识别。
  2. 后台运行长时间任务screen -dmS <name> <command> 可以在后台启动任务,无需保持终端打开。
  3. 协作: 使用 screen -x <session> 可以让多个人同时看到同一个终端会话,进行协作调试或教学。
  4. 恢复会话: 即使网络中断,只要服务器没关,screen 会话就在,用 screen -r 就能恢复工作。
  5. 复制模式: 按 Ctrl + a [ 进入复制模式,用方向键或 Page Up/Down 滚动,按 Space 开始选择,按 Enter 结束选择并复制。然后按 Ctrl + a ] 粘贴。

七、注意事项

  • screen 需要安装,通常在 Linux 发行版中可以通过包管理器安装(如 apt install screen 或 yum install screen)。
  • 窗口编号从 0 开始。
  • 分离 (detach) 后,screen 会话在后台继续运行,进程不会被 SIGHUP 信号终止。
  • 如果一个会话被多个地方连接(attach),其中一个执行 detach (Ctrl + a d),其他连接不受影响。

掌握 screen 可以极大提高你在命令行环境下的工作效率,尤其是在管理远程服务器时。


网站公告

今日签到

点亮在社区的每一天
去签到