메모리 부족 충돌 후 SystemD 서비스(화면)를 다시 시작하는 방법

메모리 부족 충돌 후 SystemD 서비스(화면)를 다시 시작하는 방법

저는 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 startjar 파일을 시작하고 java -jar Example.jar콘솔을 출력합니다.

메모리 부족 오류가 발생하면 이 서비스를 어떻게 다시 시작합니까? OOM이 발생하면 Java가 셸로 다시 종료되지 않는 것 같습니다.

답변1

Systemd 단위 파일에서 java -jar Example.jar -XX:+CrashOnOutOfMemoryserver.sh설정을 사용합니다 .Restart=on-failure

관련 정보