程序锁定终端时,如何使用屏幕运行多个程序实例?

时间:2015-10-28 17:12:32

标签: linux bash shell ubuntu

我正在尝试编写一个脚本,它将加载6个游戏服务器实例。

我到目前为止遇到的问题是脚本将打开一个新的屏幕并加载程序,然后接管终端,只允许游戏特定的命令。我必须退出程序,关闭屏幕会话并返回上一个会话,然后脚本才能加载下一个程序实例。

到目前为止,这是我的代码:

#!/bin/bash
baseUrl=$HOME"/steamcmd/steamapps/common/qlds"
count=0
serverPort=27960

cd $baseUrl

while [ $count -le 5 ]
do 
    screen bash ./$count/run_server_x64.sh +set net_port $serverPort  
    let count=$count+1
    let serverPort=serverPort+$count
done

如何修改此代码以便它继续循环并加载多个实例?

2 个答案:

答案 0 :(得分:1)

您可能需要结束命令以使用&启动服务器,以确保它变为后台运行。然后,服务器的每个实例都将被置于后台任务中。像这样:

screen bash ./$count/run_server_x64.sh +set net_port $serverPort &

我不太确定你想要什么,但这至少可以确保bash的默认行为等待当前命令在运行另一个命令之前完成,并且实例将全部启动,而不会先退出。

答案 1 :(得分:0)

为什么不在 screen会话中打开6个窗口?这或多或少是为screen所做的。

您可以使用<Control-C> c打开新窗口并在那里启动另一台服务器。

请查看docs或此quick reference,了解如何浏览这些窗口。