Запуск процесса Java из Systemd

Я пытаюсь выполнить скрипт с помощью systemd. Скрипт прекрасно работает из командной строки.

скрипт (runServer.sh), запускает процесс Java и выглядит следующим образом:

#!/bin/bash
java -jar -Dresources=/home/pruss/dev/ServerDeploy5-4.1/Server/resources/MyServer.jar "0" "Test"

внутри /usr/lib/systemd/system (или /lib/systemd/system/ на других ОС) я создал служебный файл (myService.service):

[Unit]
Description=My Servers service
[Service]
ExecStart=/home/pruss/dev/ServerDeploy5-4.1/Server/runServer.sh
User=root
Type=oneshot
[Install]
WantedBy=multi-user.target

результат

Job for myService.service failed. See "systemctl status myService.service" and "journalctl -xn" for details.

Я:

systemctl status myService.service


   Loaded: loaded (/usr/lib/systemd/system/myService.service; disabled)
   Active: failed (Result: exit-code) since Thu 2015-07-23 12:27:38 BST; 26s ago
   Main PID: 28413 (code=exited, status=203/EXEC)
16
задан Martin Monperrus
08.12.2022 1:57 Количество просмотров материала 2989
Распечатать страницу

5 ответов

Не знаю, кто дал этому палец вниз..

Я нашел решение и разместить его, чтобы спасти других усилий.

то, что вы видите выше. Однако конечная услуга такова:

[Unit]
Description=MyProgramThing
[Service]
ExecStart=/home/prus/dev/Blah-4.1/Server/runServer.sh
Type=simple
User=prus
[Install]
WantedBy=multi-user.target

важно отметить, что внутри моего скрипта оболочки мне нужно было поместить в полный путь the .файл jar. java-jar / главная / myprog.jar и т. д.

т. е. ./myJar.банки не работали. Надеюсь, это поможет.

11
отвечен wax_lyrical 2022-12-09 09:45

скрипт оболочки может не понадобиться. Можно запустить процесс от myService.служебный файл при условии, что вы используете полный путь и к двоичному файлу java и к файлу jar. Он должен выглядеть примерно так

ExecStart=/usr/bin/java -jar /home/pruss/dev/ServerDeploy5-4.1/Server/resources/MyServer.jar

работает на CentOS 7.2.

10
отвечен siliconrockstar 2022-12-09 12:02

взгляните на мой ответ на stackoverflow, в котором подробно, как создать systemd сервис для Java-приложения:

https://stackoverflow.com/a/22121547/272180

5
отвечен yglodt 2022-12-09 14:19

у меня была та же проблема (code=exited, status=203/EXEC).

не забудьте предоставить пользователю права на выполнение скрипта.

вы можете изменить 777 на что-то более строгие.

chmod 777 /home/yourscript.sh

или

chmod u+x /home/yourscript.sh

затем:

systemctl daemon-reload 
systemctl start yourScript.service 
systemctl enable yourScript.service
0
отвечен fabatera 2022-12-09 16:36

вам может понадобиться добавить WorkingDirectory=, чтобы он знал, откуда запускать вещи.

0
отвечен Christopher Peacock 2022-12-09 18:53

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх