在 Linux 上用一个命令打开所有分离的屏幕会话

问题描述 投票:0回答:2

有没有一种方法可以在一个命令/脚本中打开/附加到 Linux 上的所有分离的屏幕会话? 通常我有以下流程来打开会话:

#查看所有屏幕会话
筛选-rD
#附加到一个屏幕会话
screen -rD 屏幕名称
linux gnu-screen
2个回答
2
投票

仅在一个屏幕上进行多个终端会话会更容易。您可以使用 Ctrl+a+c 创建一个新终端,然后使用

Ctrl+a+<space>
<backspace>
或数字进行切换。 如果您手动执行此操作,我认为没有更简单的方法。如果您使用脚本生成会话,您可以尝试使用
-X
使屏幕在现有会话中打开一个新窗口并在其中执行命令。也许这个答案接近您所需要的。您需要确保以某种方式命名屏幕会话,以便稍后可以明确地引用它。


0
投票

这可以通过像这样的 bash 脚本来完成:

#!/bin/bash

for s in $(screen -ls | grep tached | awk '{print $1}' | tac)
do
  screen -d -r "$s"
done

其工作原理如下:

  1. 列出分离的会话:
    screen -ls | grep tached
  2. 反转顺序(最新的在前):
    tac
  3. 迭代会话:
    for s in ...
  4. 重新连接到每个会话:
    screen -d -r "$s"
© www.soinside.com 2019 - 2024. All rights reserved.