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


21

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

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

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

我可以使用bash脚本或其他方式执行此操作吗?我该怎么办?

Answers:


15

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

您可以看到进行中的会话,screen -ls然后重新连接screen -r "$SESSION_NAME"

死会议可以用杀死screen -wipe


它完成了工作!
拥抱2012年

1
该命令为每个命令创建一个新的屏幕会话。它不能用于创建包含每个命令一个窗口的单个屏幕会话(就像问题中的手动步骤一样)。因此,它不能回答问题,.screenrc而是应该接受以下回答。
Tey'

如果您只想廉价地在后台运行某些内容,那么多窗口一个会话是否有真正的优势?
LawrenceC

29

要自动启动多个会话,请设置一个.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


5

您可以同时使用d,m,S选项:

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

S:创建屏幕

d:与屏幕分离

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


3
有趣的是,您可以这样写,而不用这样写screen -dmS s1。我不知道在对选项进行分组时,带有参数的选项不必位于最后。
Tomasz Gandor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.