我正在使用 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