Screen的用法

SmileSion 发布于 2025-01-14 31 次阅读


screen 是一个终端复用器,允许你在一个终端窗口中创建多个会话并在它们之间切换,支持会话断开和恢复,非常适合后台运行进程或在多个任务之间切换。以下是 screen 工具的详细教程,涵盖了常用的命令和功能。


1. 安装 screen

在 CentOS 系统上,你可以通过 yum 来安装 screen

sudo yum install screen

安装完成后,使用以下命令检查 screen 的版本,确认安装成功:

screen --version

2. 启动一个新的 screen 会话

启动一个新的 screen 会话:

screen

这会打开一个新的 screen 会话,你可以在其中运行任何命令或程序。


3. 创建多个 screen 会话

你可以同时运行多个 screen 会话。每次启动一个新的 screen 会话,只需再次执行:

screen

每个新会话都将进入一个独立的环境,你可以在多个会话之间切换。


4. 在 screen 中运行命令

进入 screen 会话后,你可以像平常一样运行命令。举例来说,你可以运行 Redis 或其他服务:

redis-server /etc/redis/redis.conf

或者任何你想要在后台运行的任务。


5. 将 screen 会话置于后台

要将当前的 screen 会话置于后台,按下 Ctrl + A 然后按 D。这将使你离开当前会话,而该会话将继续在后台运行。

  • Ctrl + A:告诉 screen 你正在执行一个命令。
  • D:将会话“分离”或置于后台。

6. 查看当前的 screen 会话

如果你想查看当前的所有 screen 会话,可以运行:

screen -ls

这将列出所有运行中的 screen 会话,输出示例:

There is a screen on:
    1234.pts-0.hostname   (Detached)
1 Socket in /run/screens/S-username.
  • 这里 1234 是会话的 ID。

7. 重新附加到一个 screen 会话

如果你已经将某个会话置于后台并且想要重新连接它,可以使用以下命令:

screen -r [会话ID]

例如:

screen -r 1234

如果只有一个会话在运行,使用 screen -r 也能自动恢复。


8. 关闭 screen 会话

退出 screen 会话有两种方式:

  1. 直接退出

  • screen 会话中,输入 exit 或按 Ctrl + D,该会话将会结束。
  1. 结束会话后自动退出

  • 如果你运行的是一个后台服务或程序(比如 Redis),退出 screen 会话不会终止进程,程序将继续运行。

9. 切换会话

你可以在多个 screen 会话之间进行切换。以下是一些常用的切换命令:

  • 切换到下一个会话

    按下 Ctrl + A,然后按 N(Next),切换到下一个会话。

  • 切换到上一个会话

    按下 Ctrl + A,然后按 P(Previous),切换到上一个会话。

  • 直接切换到特定会话

    按下 Ctrl + A,然后按 "(双引号),这将列出所有会话,你可以选择并切换到指定的会话。


10. 会话命名

如果你有多个会话运行,给每个会话命名会很有帮助。使用以下命令启动 screen 时指定会话名称:

screen -S mysession

这将创建一个名为 mysessionscreen 会话。你可以使用以下命令来恢复该会话:

screen -r mysession

11. 其他有用的 screen 命令

  • 分离会话并保留在后台

    Ctrl + A + D:将当前会话分离,进程继续在后台运行。

  • 查看所有快捷键

    按下 Ctrl + A 后,按 ? 可以查看 screen 的快捷键列表。

  • 发送信号到会话

    你可以通过 screen 发送信号到后台运行的进程:

    screen -S [会话ID] -X quit
    

    这将结束指定的会话。

  • 与多个终端共享同一个会话

    使用 Ctrl + A 然后按 :multiuser on 来启用多人共享模式,其他用户可以使用 screen -x 连接到该会话。


总结

  • screen 使你能够创建多个独立的会话并在它们之间切换。
  • 它支持后台运行进程,即使关闭终端或断开连接,进程也会继续运行。
  • 常用操作包括创建新会话、切换会话、分离和恢复会话。

通过掌握 screen 的使用,可以大大提高在命令行界面中管理多个任务的效率。