首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法停止使用systemctl启动启动的屏幕

无法停止使用systemctl启动启动的屏幕
EN

Ask Ubuntu用户
提问于 2021-04-09 11:24:05
回答 1查看 524关注 0票数 0

在ubuntu服务器20.04上

在这样的屏幕会话中,我为“我的世界”服务器创建了一个服务定义

代码语言:javascript
运行
复制
[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
    • 它阻塞了终端
    • 从另一个shell中,我可以输入屏幕会话。

  • 以用户的身份登录,并执行screen -r "minecraft-server" -X quit退出正在运行的Min克拉夫特服务器
  • 停止运行服务的运行java应用程序立即重新启动服务

什么不起作用

  • systemctl stop minecraft.service⇒--它只是挂起几秒钟,当它返回时,服务仍然在运行。

然后,我可以登录到屏幕会话并停止服务,而无需重新启动它。但到底怎么回事?这些命令可以正常工作,为什么systemctl不能在屏幕会话中停止(或重新启动)进程中的java?

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2021-04-09 21:28:40

正如这里的好人所指出的:https://serverfault.com/questions/1059919/cannot-stop-screen-started-with-systemctl-start/1059923#1059923

需要设置

代码语言:javascript
运行
复制
KillMode=control-group.

他们能省略吗?

代码语言:javascript
运行
复制
#ExecStop=/usr/bin/screen -r "minecraft-server" -X quit

当屏幕将SIGTERM传播到jvm时

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1330299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档