我接近放弃屏幕并寻找其他选择。 我的服务器上运行了两台Minecraft服务器。一个DireWolf20和一个EpicCraft。 有时我需要重新启动服务器,每次我需要通过SSH手动登录并启动屏幕2次时,导航到包含服务器启动文件的文件夹,启动并分离会话。我试图创建一个自动化该过程的脚本,留下两个命名的会话,我可以在以后重新连接并管理所需的。
BUT 我没有成功地使该脚本工作。有时我得到两个命名的屏幕窗口,注意到了,有时根本没有任何事情发生。
我非常沮丧,不知道我做错了什么。
我的服务器以包含以下内容的ServerStart.sh文件开头:
java -Xms1024m -Xmx2048m -jar FTBServer-1.6.4-965.jar nogui
pause
这是另一台服务器相同的Direwolf20服务器。
我已经尝试了100种不同的东西来使脚本正常工作,也就是当我读到使用./命令启动它时使一个脚本工作是一回事但是当它进入rc.local文件时我需要添加:su - [用户名] -c
ServerStart不需要ROOT!
实际上,我不希望它以root权限运行。
答案 0 :(得分:1)
假设您的脚本带有启动服务器的命令位于 / usr / local / sbin / startup ,并且您想要将屏幕命名为 startup-server 我会使用方法:
/usr/bin/screen -dmS startup-server /usr/local/sbin/startup
在 /etc/rc.local 中以root身份启动服务器!
[root@vm1]$ screen --help
...
-d (-r) Detach the elsewhere running screen (and reattach here)
-m ignore $STY variable, do create a new screen session.
-S sockname Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
...
示例(包括启动脚本 - 不是屏幕 - 作为不同的用户:
# file: /etc/rc.local
/usr/bin/screen -dmS startup-server1 /usr/local/sbin/startup
/usr/bin/screen -dmS startup-server2 sudo -u git -H /usr/local/sbin/startup
/usr/bin/screen -dmS startup-server3 sudo -u postfix -H /usr/local/sbin/startup
...重新启动
[root@vm1]$ screen -ls
There are screens on:
3292.startup-server3 (07/24/14 01:25:01) (Detached)
3290.startup-server2 (07/24/14 01:25:01) (Detached)
3287.startup-server1 (07/24/14 01:25:01) (Detached)
3 Sockets in /var/run/screen/S-root.
您可以附加例如
的屏幕[root@vm1]$ screen -r startup-server1
为了完整起见,我的演示脚本执行此操作:
[root@vm1]$ cat /usr/local/sbin/startup
#!/bin/bash
while [ 1 = 1 ]; do
sleep 5
echo "five seconds later..."
done
修改强>
也许我没有把问题说得对。
如果您的脚本无效,请记住:
在命令行中使用哪个java 找出java二进制文件的位置并更改脚本(如果哪个java 返回,例如 / usr / bin中/ JAVA 强>):
/ usr / bin / java -Xms1024m -Xmx2048m -jar FTBServer-1.6.4-965.jar nogui