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

hug*_*hes 23 linux bash gnu-screen

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

我知道如何手动执行此操作:

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

我可以用 bash 脚本或其他东西来做到这一点吗?我该怎么做?

sle*_*ske 33

要自动启动多个会话,请设置一个.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 
Run Code Online (Sandbox Code Playgroud)

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

因此,第一screen行和第二行开始会话并vim在内部启动。第三个只是开始一个会话,并在提示时让您离开。chdir更改所有后续会话的工作目录。

如果您想拥有多个.screenrc文件,只需随意命名它们,然后选择一个带有screen -c myscreenrc.


Law*_*ceC 18

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

您可以使用 来查看活动会话screen -ls和重新附加screen -r "$SESSION_NAME"

死会话可以用screen -wipe.

  • 此命令为每个命令创建一个新的屏幕会话。它不能用于创建包含每个命令一个窗口的单屏幕会话(如问题中的手动步骤所做的那样)。因此,它没有回答这个问题,下面的“.screenrc”答案应该被接受。 (8认同)

小智 5

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

screen -Sdm s1
screen -Sdm s2
screen -Sdm s3
Run Code Online (Sandbox Code Playgroud)

S : 创建画面

d : 从屏幕上分离

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

  • 有趣的是,你可以这样写,而不是`screen -dmS s1` 等。我不知道,在分组选项时,带参数的不必放在最后。 (3认同)