screen
是一个强大的终端复用器,允许你创建多个虚拟终端会话,并在这些会话之间切换。 它非常适合在远程服务器上运行长时间的任务,因为即使你断开连接,会话也会继续运行。 以下是 screen
的基本用法:
1. 安装 screen
:
如果你的系统上没有安装 screen
,可以使用以下命令安装:
- Debian/Ubuntu:
sudo apt update && sudo apt install screen
- CentOS/RHEL:
sudo yum install screen
- Fedora:
sudo dnf install screen
- macOS (使用 Homebrew):
brew install screen
2. 启动 screen
:
screen
: 启动一个新的screen
会话。 如果这是你第一次启动screen
,你可能会看到一个介绍页面,按空格键继续。screen -S <session_name>
: 启动一个名为<session_name>
的新screen
会话。 这可以让你更容易地识别和重新连接到特定的会话。 例如:screen -S my_long_task
3. 基本操作:
screen
的所有命令都以 Ctrl+a
开头。 这意味着你先按下 Ctrl
键和 a
键,然后释放这两个键,再按下另一个键来执行命令。
Ctrl+a c
: 创建一个新的窗口 (虚拟终端)。Ctrl+a n
: 切换到下一个窗口。Ctrl+a p
: 切换到上一个窗口。Ctrl+a <number>
: 切换到编号为<number>
的窗口 (窗口编号从 0 开始)。 例如,Ctrl+a 0
切换到第一个窗口。Ctrl+a "
(双引号): 列出所有窗口,并允许你选择要切换到的窗口。Ctrl+a d
: 分离 (detach) 当前会话。 这会将你从screen
会话中分离出来,但会话仍然在后台运行。 你会回到原始终端。Ctrl+a k
: 杀死 (kill) 当前窗口。screen
会提示你确认是否要杀死窗口。Ctrl+a ?
: 显示帮助信息,列出所有可用的命令。
4. 重新连接到 screen
会话:
screen -r
: 如果只有一个分离的会话,这将直接连接到它。screen -r <session_name>
或screen -r <PID>
: 如果有多个分离的会话,你需要指定会话的名称或 PID。 使用screen -ls
命令查看所有可用的会话及其名称/PID。
5. 列出 screen
会话:
screen -ls
: 列出所有正在运行的screen
会话。 输出会显示会话的 PID 和状态(例如,Detached 或 Attached)。
6. 示例:
启动一个新的
screen
会话:screen -S my_session
在第一个窗口中,启动一个长时间运行的任务,例如:
ping google.com
创建一个新的窗口:
Ctrl+a c
在第二个窗口中,运行另一个命令:
top
切换回第一个窗口:
Ctrl+a 0
分离会话:
Ctrl+a d
稍后,重新连接到会话:
screen -r my_session
7. 高级用法:
screen
配置文件: 你可以通过编辑~/.screenrc
文件来配置screen
的行为,例如设置默认窗口数量、自定义快捷键等。- 窗口命名: 使用
Ctrl+a A
(大写 A) 可以为当前窗口设置一个更有意义的名称。 这可以使screen -ls
的输出更易于理解。 - 滚动: 在
screen
会话中,按下Ctrl+a [
进入复制模式,然后可以使用方向键或 vi 风格的键 (h, j, k, l) 来滚动查看历史输出。 按下Esc
退出复制模式。
总结:
screen
是一个非常有用的工具,可以提高你在终端中的工作效率,尤其是在远程服务器上。 掌握基本命令(创建窗口、切换窗口、分离和重新连接会话)可以让你轻松地管理多个任务。 记住,所有命令都以 Ctrl+a
开头。 探索 screen
的更多高级功能,例如窗口命名和配置文件,可以进一步定制你的使用体验。