我有一个在屏幕上运行的 minecraft 服务器,现在,它只是一个启动 java 的脚本,如下所示:
screen -dmS mc java -Xincgc -Xms1024M -jar craftbukkit-1.6.4-b2882.jar
基本上,这只是在后台的屏幕容器中启动 minecraft,我可以screen -r mc
通过 SSH 访问它。但是,我想要做的是让进程始终在服务器监视器上启动,并且也可以通过 ssh 访问screen -x mc
。另外,我有一个 restart.sh 脚本,每两小时将 stop 命令填充到 mc 进程中,然后执行 start.sh 脚本。服务器处于运行级别 3,所以我认为不会gnome-terminal -e "screen -x mc"
起作用。另外,似乎 restart 脚本在屏幕外启动了 mc。当我通过 SSH 进入服务器时,screen -ls
什么也没有出现,但 minecraft 服务器进程正在运行,我可以连接到它。这是脚本:
#!/bin/sh
screen -x mc
screen -s mc stuff "say Server Restarting in 15 minutes."
screen -s mc -X eval "stuff \015"
sleep 600
screen -x mc
screen -x mc -X stuff "say Server restarting in 5 minutes."
screen -s mc -X eval "stuff \015"
sleep 240
screen -x mc
screen -s mc -X stuff "say Server restarting in 1 minute."
screen -s mc -X eval "stuff \015"
sleep 60
screen -S mc -X stuff "say Server restarting."
screen -S mc -X eval "stuff \015"
screen -S -X stuff "kickall Server Restarting, it should be back up in about a minute."
screen -S mc -X eval "stuff \015"
sleep 2
screen -S mc -X stuff "stop"
screen -S mc -X eval "stuff \015"
sleep 30
screen -wipe
sleep 3
cd /minecraft/server/craftbukkit
./start.sh
有任何想法吗?
答案1
我认为,更好的方法是使用初始化脚本来管理您的应用程序。
一些例子 :
- http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts
- http://www.thegeekstuff.com/2012/03/lsbinit-script/
- http://www.cyberciti.biz/tips/linux-write-sys-v-init-script-to-start-stop-service.html
确保您的进程将其输出记录到文件中,并使用“tail -f”命令,您将能够“让进程始终在服务器监视器上启动,并且可以通过 ssh 访问”