Запуск java как сервиса через systemd
Предоставим у вас есть jar файл и вам нужно его запустить как сервис. Так же есть необходимость запускать его автоматически когда система перезагружается.
Убунту имеет встроенный механизм для создания сервисом в ручном режиме, запуск во время загрузи системы и останавливать и запускать как сервис. В этой статье мы сделаем простую сервис обертку для вашего jar файла, который можно будет запускать как сервис. Начнем.
1) Создадим сервис
sudo vim /etc/systemd/system/my-webapp.service
Копируем следующее содержание в файл /etc/systemd/system/my-webapp.service
:
[Unit]
Description=My Webapp Java REST Service
[Service]
User=ubuntu
# Конфигурационный файл приложения application.properties должен быть тут:
# Замените на вашу рабочую папку
WorkingDirectory=/home/ubuntu/workspace
# Путь к экзешнику.
# Экзешник это bash скрипт, который вызывает jar файл
ExecStart=/home/ubuntu/workspace/my-webapp
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
2) Создаём Bash скрипт для вызова сервисов.
bash script that calls your JAR file: my-webapp
#!/bin/sh sudo /usr/bin/java -jar my-webapp-1.0-SNAPSHOT.jar server config.yml
Don't forget to give your script execute permission: sudo chmod u+x my-webapp
Step 3: Start the Service
sudo systemctl daemon-reload sudo systemctl enable my-webapp.service sudo systemctl start my-webapp sudo systemctl status my-webapp
Step 4: Set Up Logging
First, run: sudo journalctl --unit=my-webapp . See real-time logs by using the -f option.
If you want to trim them, use -n <# of lines> to view the specified number of lines of the log:
sudo journalctl -f -n 1000 -u my-webapp
Tail the live log using the -f option: sudo journalctl -f -u my-webapp
Stop the service by using: sudo systemctl stop my-webapp
That's it! Enjoy and show your support if you like it.