我想在我的小型虚拟服务器上运行私有 Minecraft 和 Teamspeak 服务器。当我全部手动启动时,它工作得很好,但我希望我的服务器在服务器启动时自动启动。
当我运行两台服务器时,我使用 screen 来获取多个窗口。但我不知道如何启动具有两个窗口的屏幕会话,并使用在启动时运行的单个脚本在每个窗口中执行一个服务器。
是否有可能启动一个分离的屏幕会话,向其发送要执行的命令,在该会话中打开一个新窗口并向其发送另一个命令?
我想到了这样的事情:
screen -dmS test -t win1 # create new screen session, name it test
# and name the first window win1
screen -S test -X mcStart.sh # start the minecraft server
screen -S test -X screen -t win2 # create a new window, name it win2
screen -S test -X tsStart.sh # start teamspeak server
在我看来,这听起来不错,但它根本不起作用......我得到的只是一个带有两个空窗口的屏幕会话,名为“win1”和“win2”。
请告诉我我必须做什么才能让这件事发挥作用。
顺便说一句:如果可能的话,我不想在单个屏幕会话中运行每个服务器。
答案1
-X
不起作用的原因是因为它是screen
您正在执行的命令 - 为了让它运行mcStart.sh
并且tsStart.sh
,您应该使用:
screen -dmS test -t win1 mcStart.sh
screen -rS test -X screen -t win2 tsStart.sh