unit.примерыPythonNode.jsJavaType и RestartЗащита службы

Unit-файл для Java (jar)

Подходит для Spring Boot и любого исполняемого jar.

[Unit]
Description=Java app
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=app
WorkingDirectory=/opt/app
Environment="JAVA_OPTS=-Xms256m -Xmx512m"
ExecStart=/usr/bin/java $JAVA_OPTS -jar /opt/app/app.jar
SuccessExitStatus=143
TimeoutStopSec=60
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Почему SuccessExitStatus=143

При systemctl stop служба получает SIGTERM. JVM завершается корректно, но с кодом 143 (128 + 15). Без SuccessExitStatus=143 systemd посчитает это ошибкой, и служба останется в состоянии failed после обычной остановки.

Память

JVM не знает про лимиты systemd. Если задать MemoryMax=, ставьте -Xmx заметно меньше: кроме кучи, Java тратит память на метаданные классов, потоки и буферы. Иначе процесс убьёт OOM killer, а в статусе будет status=9/KILL.

Долгий запуск

Если приложение стартует дольше 90 секунд, а тип службы notify или forking, увеличьте TimeoutStartSec=. При Type=simple systemd не ждёт готовности, и этот таймаут на запуск не влияет.

Готовые unit-файлы для своих приложений. Синтаксис примеров проверен systemd-analyze verify на systemd 255. Обновлено 2026-11-04.