在ubuntu服务器20.04上
在这样的屏幕会话中,我为“我的世界”服务器创建了一个服务定义
[Unit]
Description=Minecraft Server
After=network.target
[Service]
User=minecraft
Nice=1
KillMode=none
SuccessExitStatus=0 1
#ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
WorkingDirectory=/home/minecraft
ExecStart=/usr/bin/screen -AmDS "minecraft-server" /usr/bin/java -Xmx12G -Xms4G -jar /home/minecraft/minecraft-server.jar nogui
ExecStop=/usr/bin/screen -r "minecraft-server" -X quit
ExecStopPost=kill -9 $(ps -ef | grep '[/]home/minecraft/minecraft-server.jar' | grep -v SCREEN | awk '{print $2}')
ExecStopPost=rm -f /home/minecraft/Blumentopf/session.lock
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target什么起作用
systemctl start minecraft.service⇒屏幕会话启动和用户管理可以进入它screen -AmDS "minecraft-server" /usr/bin/java -Xmx12G -Xms4G -jar screen -r "minecraft-server" -X quit退出正在运行的Min克拉夫特服务器什么不起作用
systemctl stop minecraft.service⇒--它只是挂起几秒钟,当它返回时,服务仍然在运行。然后,我可以登录到屏幕会话并停止服务,而无需重新启动它。但到底怎么回事?这些命令可以正常工作,为什么systemctl不能在屏幕会话中停止(或重新启动)进程中的java?
发布于 2021-04-09 21:28:40
正如这里的好人所指出的:https://serverfault.com/questions/1059919/cannot-stop-screen-started-with-systemctl-start/1059923#1059923
需要设置
KillMode=control-group.他们能省略吗?
#ExecStop=/usr/bin/screen -r "minecraft-server" -X quit当屏幕将SIGTERM传播到jvm时
https://askubuntu.com/questions/1330299
复制相似问题