命令简介

screen 命令是一个在 Linux 系统中非常有用的终端复用器。它可以创建一个虚拟终端会话,即使断开与服务器的连接,该会话也会继续运行,下次连接时可以恢复之前的会话状态。这对于远程管理服务器或运行长时间任务非常有帮助。

命令格式

1
screen [选项] [命令 [参数]]

其中:

  • 选项:指定 screen 命令的选项。
  • 命令:指定在 screen 会话中要执行的命令。
  • 参数:指定传递给命令的参数。

参数说明

参数 说明 备注
-S 指定新建会话的名称 默认为无名称
-d 将新建会话置于断开模式 适合运行脚本或命令
-r 恢复已断开的会话 需指定会话名称或编号
-R 恢复已断开的会话,如无则新建 同上
-x 将控制令附加到创建的会话 用于共享会话
-ls 列出当前所有的会话 -
-wipe 结束并清除会话后的残留数据 -

命令实例

基本用法

1.新建会话

1
2
3
4
5
6
7
8
# 新建一个无名称的会话
screen

# 新建一个名为 server 的会话
screen -S server

# 新建一个置于断开模式的会话
screen -d -m

2.恢复会话

1
2
3
4
5
6
7
8
# 恢复最后一个断开的会话
screen -r

# 恢复名为 server 的会话
screen -r server

# 恢复会话编号为 1234 的会话
screen -r 1234

3.操作会话

screen 会话中,可以使用以下快捷键进行操作:

  • Ctrl+A+D: 暂时断开当前会话
  • Ctrl+A+K: 杀死当前会话
  • Ctrl+A+C: 创建新的会话窗口
  • Ctrl+A+N: 切换到下一个会话窗口
  • Ctrl+A+P: 切换到上一个会话窗口
  • Ctrl+A+?: 显示所有快捷键命令

4.列出会话

1
2
# 列出当前所有的会话
screen -ls

扩展用法

1.共享会话

screen 命令支持多个用户共享同一个会话,非常适合协作工作。

1
2
3
4
5
# 用户 A 新建一个名为 shared 的会话
screen -S shared

# 用户 B 附加到 shared 会话
screen -x shared

2.分离与恢复后台会话

如果需要在会话中运行一些长时间的任务或脚本,可以将会话置于后台模式,并在需要时恢复。

1
2
3
4
5
# 新建一个后台会话并运行命令
screen -d -m command

# 恢复后台会话
screen -r

3.会话窗口管理

screen 会话中,可以通过快捷键创建多个窗口,方便进行不同的工作。

1
2
3
4
5
6
7
8
9
10
11
# 创建新的窗口
Ctrl+A+C

# 切换到下一个窗口
Ctrl+A+N

# 切换到上一个窗口
Ctrl+A+P

# 杀死当前窗口
Ctrl+A+K

4.使用 screen 命令进行远程连接

1
2
3
4
5
# 使用 `screen` 命令连接到远程服务器
screen ssh user@host

# 或者
screen -x ssh user@host

高级用法

1.会话日志记录

screen 命令可以将会话中的输出记录到日志文件中,方便后续查看和分析。

1
2
3
4
5
# 新建一个会话并将输出记录到日志文件
screen -L -Logfile log.txt

# 将当前会话的输出记录到日志文件
Ctrl+A+H

2.使用 screen 命令创建自定义配置文件

1
2
3
4
5
6
7
8
9
10
11
12
# 创建名为 ".screenrc" 的配置文件
vim ~/.screenrc

# 在配置文件中添加以下内容
# 将默认窗口数量设置为 2
default 2

# 将窗口标题颜色设置为蓝色
titlecolor blue

# 将滚动条颜色设置为红色
scrollcolor red

3.使用 screen 命令创建自动启动脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 创建名为 ".screenrc.sh" 的自动启动脚本
vim ~/.screenrc.sh

# 在脚本中添加以下内容
#!/bin/bash

# 自动创建两个窗口
screen -X screen 1
screen -X screen 2

# 在第一个窗口中运行 "vim"
screen -X select 0
screen -X send-keys "vim" Enter

# 在第二个窗口中运行 "top"
screen -X select 1
screen -X send-keys "top" Enter

# 运行脚本
bash ~/.screenrc.sh

通过以上实例和扩展用法,相信你已经对 screen 命令有了更深入的了解。它可以帮助我们更好地管理远程会话,提高工作效率。如果你还有任何疑问或需要进一步探讨,欢迎随时向我提出。