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

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

Server Fault用户
提问于 2021-04-09 17:57:23
回答 1查看 497关注 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⇒--它只是挂起几秒钟,当它返回时,服务仍然在运行。是的,仍然在运行,没有重新启动(相同的PID,没有断开,没有新的日志)

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

EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-04-09 18:22:36

尝试将服务定义行KillMode=none更改为KillMode=control-group

如果可以的话,请进行测试;除非您有在none模式下运行的目的。

systemd.kill :男子

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

https://serverfault.com/questions/1059919

复制
相关文章

相似问题

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