我正在尝试编写一个脚本,它将加载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
如何修改此代码以便它继续循环并加载多个实例?
答案 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,了解如何浏览这些窗口。