2013-09-30 79 views
0

我试图安排一次游戏服务器重新启动和vps重新启动。我做了3项的cron(屏幕终止,VPS重启,游戏服务器开始)的root用户USER1crontab在运行脚本之前需要用户登录一次

29 6 * * * sleep 48; screen -S cs1 -X quit 
31 6 * * * cd /home/user1/steamcmd/hlds; ./cs1.sh 

cs1.sh

screen -dmS cs1 ./hlds_run -game cstrike -pingboost 2 +map de-dust +maxplayers 31 +port 27018 

30 6 * * * /sbin/reboot 

crontab条目

crontab条目

问题是user1的第二个crontab项不工作,除非如果我在重新启动后和上午6:31之前登录(通过腻子)。有没有人可以在这里解释如何解决这个问题?

+0

你可能无法运行屏幕创建一个新的屏幕会话,而不需要连接到你的shell。运行你的cron作业的shell不会有任何tty连接。 –

+0

你是什么意思,我该如何解决? – user2832854

+0

登录时,终端是所有程序都可以打印结果的地方。您的终端连接到所有这些程序。当cron作业开始时,cron作业可以打印结果的终端不存在,因此只能运行程序作为不需要终端的cron作业。 GNU屏幕显然需要一个终端,所以要修复它,你必须重写GNU屏幕的代码。所以,很可能,这是你无法轻松解决的问题。 –

回答

1

我不确定这是否会对你有所帮助,但我运行一个在0230每天重新启动的craftbukkit服务器。我发现我无法从crontab调用启动脚本,但我可以运行屏幕命令。

下面是服务器重新启动我的crontab条目:

@reboot CD /家庭/ mcadmin/craftbukkit & &屏幕-dms的Minecraft的Java -Xincgc -Xmx2048M -jar craftbukkit.jar