Невозможно остановить запуск экрана с помощью systemctl start

На сервере ubuntu 20.04

я создал определение службы для сервера Minecraft в рамках такого сеанса экрана

[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 ⇒ начало сеанса экрана, и пользователь Minecraft может войти в него
  • войти в систему как пользователь minecraft и выполнить screen -AmDS "minecraft-server" / usr / bin / java -Xmx12G -Xms4G -jar
    • он блокирует терминал
    • из другой оболочки. Я могу войти в сеанс экрана
  • войти как пользователь minecraft и выполнить screen -r "minecraft-server" -X quit выйти из запущенного Minecraft сервер
  • убивающий ранн Приложение java для запущенной службы немедленно перезапускает службу

Что не работает

  • systemctl stop minecraft.service ⇒ это просто зависает на несколько секунд, а когда возвращается, служба все еще работает.

Затем я могу войти в сеанс экрана и остановить службу без ее перезапуска. Но какого черта? Команды работают должным образом, почему systemctl не может остановить (или перезапустить) Java в процессе в сеансе экрана?

0
задан 9 April 2021 в 14:24

1 ответ

Как отметил этот милый парень: 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

, так как экран передает ЗАПИСЬ на jvm

0
ответ дан 23 April 2021 в 23:24

Другие вопросы по тегам:

Похожие вопросы: