screen会话

在Linux和类Unix系统中,screen命令是一个非常强大的终端复用器,它允许用户在一个单一的物理终端上启动多个会话,并在它们之间进行切换。使用screen,你可以在一个会话中运行程序,然后断开连接,之后又重新连接到同一个会话,程序会继续运行。

以下是一些基本的screen命令和选项:

  • screen:启动一个新的screen会话。
  • screen -S <session_name>:创建一个名为<session_name>的新会话。
  • screen -r <session_name>:重新连接到名为<session_name>的会话。
  • screen -r -D <session_name>:重新连接到会话,如果会话不存在,则创建它。
  • screen -ls:列出所有现有的screen会话。
  • screen -x <session_name>:将当前终端窗口附加到指定的会话。
  • Ctrl-A D:从当前会话中分离,即使会话中有活动的程序,它们也会继续运行。
  • Ctrl-A \:切换到下一个会话。
  • Ctrl-A Ctrl-A:切换回之前的会话。

screen还支持多个窗口(通过Ctrl-A S创建),标签页(通过Ctrl-A Tab切换),以及复制和粘贴文本等功能。这些功能使得screen成为远程服务器管理和长时间运行程序的理想工具。

请注意,screen的默认快捷键前缀是Ctrl-A,但这个前缀可以被配置为其他组合键,以避免与终端模拟器的快捷键冲突。

我们在命令行执行模型的训练或者其他工作时, 常常需要挂起程序很长时间, 这中间窗口关闭会影响程序的执行. 使用screen可以方便的管理多个命令行工作流, 而不必担心彼此的影响. 这里简单介绍一下最常用的几个命令.

1. 启动新的screen会话:

# 创建名为name的会话

screen -S name

# 创建一个会话, 系统自动命名(形如:XXXX.pts-53.ubuntu)

screen

2. 退出当前screen会话:

按:Ctrl+a, 再按:d, 即可退出screen, 此时,程序仍在后台执行;

3. 查看当前已有的screen会话:

输入:screen -ls;

4. 进入某个会话:

输入:screen -r 程序进程ID, 返回程序执行进程;

5. 窗口操作:

Ctrl+a+w: 展示当前会话中的所有窗口;

Ctrl+a+c: 创建新窗口;

Ctrl+a+n: 切换至下一个窗口;

Ctrl+a+p: 切换至上一个窗口;

Ctrl+a+num: 切换至编号为num的窗口;

Ctrl+a+k: 杀死当前窗口;

6. 删除某个会话:

screen -S your_screen_name -X quit