저는 SystemD 서비스를 사용하여 Java 기반 서버(OK! 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가 셸로 다시 종료되지 않는 것 같습니다.
답변1
Systemd 단위 파일에서 java -jar Example.jar -XX:+CrashOnOutOfMemory
및 server.sh
설정을 사용합니다 .Restart=on-failure