内存不足崩溃后如何重新启动 SystemD 服务(屏幕)

内存不足崩溃后如何重新启动 SystemD 服务(屏幕)

我正在使用 SystemD 服务通过屏幕控制基于 Java 的服务器(好的!它是 Minecraft :D),如下所示:

[Unit]
Description=mc@auth
After=local-fs.target network.target mysqld.service

[Service]
WorkingDirectory=/home/minecraft/auth
User=minecraft
Group=minecraft
Type=forking

Restart=always
RestartSec=5s

ExecStart=/bin/bash ./server.sh start

ExecStop=/bin/bash ./server.sh stop
ExecStop=/bin/bash -c "while ps -p $MAINPID > /dev/null; do /bin/sleep 1; done"

[Install]
WantedBy=multi-user.target

server.sh start只需启动 jar 文件java -jar Example.jar并输出控制台。

当我收到内存不足错误时,如何重新启动此服务?当发生 OOM 时,Java 似乎不会退出并返回到 shell。

答案1

java -jar Example.jar -XX:+CrashOnOutOfMemory在Systemd 单元文件中使用server.sh并设置。Restart=on-failure

相关内容