【问题标题】:How to start multiple screen sessions from bash script如何从 bash 脚本启动多个屏幕会话
【发布时间】:2018-08-08 06:52:21
【问题描述】:

我想在重启后运行两个屏幕,每个屏幕都有程序。

这是我的脚本:

#!/bin/sh
echo Killing all existing screens...

screen -X -S launcher quit
sleep 2
screen -X -S server quit


echo Loading launcher screen...
screen -S launcher -d -m bash -c  "/home/test/Launcher.exe"
sleep 2
echo Loading server screen...
screen -S server -d -m bash -c  "/home/test/server/server/Server.exe"
echo All done.

只有第一个启动并运行良好。我试图将它们分开,但仍然没有运气。 我有 Ubuntu Server 15.10 64bit / Linux 4.2.0-42-generic)

【问题讨论】:

  • 会不会是脚本出错了?如果脚本停止、存在或分离(如进入后台),屏幕只会终止。
  • 也许尝试在后台启动新进程?在每个启动新屏幕的命令末尾添加&。

标签: bash ubuntu sh gnu-screen


【解决方案1】:

您还可以探索为屏幕编写 .rc 脚本的选项。这个想法是,您通过多次调用屏幕运行的所有命令,您捆绑到一个“屏幕脚本”文件并使用 -c 启动,例如:

$ cat screen.rc
startup_message off

screen -t "Pilot" ./pilot_tunel.sh
split
focus
screen -t "AT TB1" ./at_tb1_tunnel.sh
focus

然后启动它:

$ screen -c screen.rc

不知怎的,我发现它更干净了。

同样使用屏幕的“split”命令,我们可以在同一个屏幕上看到两个脚本的输出:

我发现它也很有用。

希望对你有帮助 贾雷克

PS:显然,我给出的示例不是映射您的命令。这只是功能的概述。

【讨论】:

    【解决方案2】:

    解决了先启动后在屏幕中启动应用程序的问题:

    screen -dmS launcher
    screen -S launcher -X screen  "/home/test/Launcher.exe"
    screen -dmS server
    screen -S server -X screen "/home/test/server/server/Server.exe"
    

    【讨论】:

    • 您还可以探索为屏幕编写 .rc 脚本的选项。这个想法是,您通过多次调用 screen 运行的所有命令,您捆绑到单个“屏幕脚本”文件并使用 -c 启动,例如:$ cat screen.rc startup_message off screen -t "Pilot" ./pilot_tune。 sh split focus screen -t "AT TB1" ./at_tb1_tunnel.sh focus ------------ 然后启动它: $ screen -c screen.rc ---------- ---- 不知怎的,我发现它更干净了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多