如何自动启动多个屏幕会话?

如何自动启动多个屏幕会话?

我正在尝试构建一个命令来启动screen、创建四个具有不同名称的会话并运行四个不同的命令。

我知道如何手动完成此操作:

1. screen
2. ./command1 args
3. CTRL-A :sessionname Session 1
4. CTRL-A C
5. (GOTO 2)

我可以使用 bash 脚本或其他东西来执行此操作吗?我该怎么做?

答案1

screen -dmS "$SESSION_NAME" "$COMMAND" "$ARGUMENTS"$COMMAND将在后台生成一个运行的屏幕。

您可以查看 的活动会话screen -ls以及 的重新连接screen -r "$SESSION_NAME"

可以使用 终止死亡的会话screen -wipe

答案2

要自动启动多个会话,请设置一个.screenrc文件,即屏幕的配置文件。在其中,您可以创建会话、启动程序、更改工作目录等。我使用它来初始化我的屏幕会话。

.screenrc 文件的简单示例:

# don't display the copyright page
startup_message off

# increase scrollback buffer size
defscrollback 10000

# create windows
screen -t TODO vim TODO.txt
chdir src
screen -t coding vim main.c
screen -t run 

上面的每个命令screen都创建一个屏幕会话。-t设置会话的标题;该行的其余部分是运行的命令及其参数。

因此,第一行和第二screen行启动一个会话并vim在内部启动。第三行只是启动一个会话并将您带到提示符处。chdir更改所有后续会话的工作目录。

如果您想要多个.screenrc文件,只需以您想要的任意方式命名它们,然后使用 选择一个screen -c myscreenrc

答案3

您可以一起使用 d、m、S 选项:

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3

S :创建屏幕

d :从屏幕分离

m:强制创建屏幕,无论屏幕是否从另一个屏幕中调用。

答案4

我有很多需要打开一组主机进行调查或支持的案例。因为我只是偶尔需要这些额外的窗口,所以我决定使用 shell 脚本而不是.screenrc方法。

例如在〜/ bin / prod_support中:

#!/bin/bash

if [[ ! -z "$STY" ]]; then
        screen -t "hosta" ssh hosta
        screen -t "hostb" ssh hostb
else
        echo "start up screen first"
fi

如果从运行非屏幕shell 我收到一个提醒...如果从屏幕内部运行,它将为每个脚本运行添加标题窗口。

相关内容