Назад | Перейти на главную страницу

Как запустить jar-файл с помощью systemd

Я хочу запустить приложение Java при загрузке системы, используя systemd. Я попробовал сделать, добавив выше скрипты. Но сервис не запускается.

my-startup.service

[Unit]
Description=Startup

[Service]
ExecStart=/usr/local/sbin/my-startup.sh

[Install]
WantedBy=multi-user.target

my-startup.sh

cd /var/www/test.com
nohup java -jar *.jar>test.out 2>test.err &

Но приложение не запускается при запуске сервера.

● my-startup.service - Startup
   Loaded: loaded (/etc/systemd/system/my-startup.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Wed 2018-12-12 16:22:52 +0530; 27s ago
  Process: 650 ExecStart=/usr/local/sbin/my-startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 650 (code=exited, status=0/SUCCESS)

Dec 12 16:22:52 localhost.localdomain systemd[1]: Started Startup.
Dec 12 16:22:52 localhost.localdomain systemd[1]: Starting Startup...

Использование директив systemd вместо оболочки приводит к более согласованной среде. Это включает в себя отказ от использования $ PATH или рабочего каталога путем предоставления полных путей, где они известны.

Ни то, ни другое & для контроля работы, ни для управления SIGHUP нужно. Сервисные подразделения systemd уже обоснованы.

Предполагая, что программа не разветвляется, другими словами, java exec продолжает работать, что Type=simple

[Unit]
Description=something

[Service]
ExecStart=/usr/bin/java -jar /var/www/test.com/something.jar
StandardOutput=file:/var/log/something.out.txt
StandardError=file:/var/log/something.err.txt
Type=simple
WorkingDirectory=/var/www/test.com

[Install]
WantedBy=multi-user.target