Скучное предупреждение деталей: у Меня есть a systemd
service
файл, который использует файл удара для запуска сервиса. Ниже рассматриваемый сервисный файл:
[Unit]
Description=A program service
[Service]
User=root
#change this to your workspace
WorkingDirectory=/data/acloud/repository/lib
#path to executable.
#executable is a bash script file I created to run the application jar file
ExecStart=/data/acloud/repository/lib/program.sh
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
Ниже program.sh
Я использовал в сервисном файле выше:
#!/bin/bash
sudo java -XX:+UseG1GC -Xmx1g -Xms512m -jar abc-program-0.0.1-SNAPSHOT.jar
Если Вы задаетесь вопросом, почему я создал однострочный сценарий удара, потому что я не знаю, где и как поместить-XX,-Xms-Xmx параметры в .service
файл.
Даже когда сервис неактивен, состояние Main PID показывают как status=0/SUCCESS
и в конце systemctl status
вывод команды, говорит это Started a program service
?? Ниже то, как его показанный:
ubuntu@ip-172-**-**-***:/data/acloud/repository/lib$ sudo systemctl status program
program.service - A program service
Loaded: loaded (/etc/systemd/system/program.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Fri 2019-02-22 13:08:21 UTC; 45s ago
Process: 27711 ExecStart=/data/acloud/repository/lib/program.sh (code=exited, status=0/SUCCESS)
Main PID: 27711 (code=exited, status=0/SUCCESS)
Feb 22 13:08:21 ip-172-**-**-*** systemd[1]: Started A program service.
Я полагаю, что использование удара вызывает эту проблему, поскольку в кодах выхода не управляют здесь. Как я заставляю это останавливаться?
sudo является почти всегда ошибкой в systemd сценариях.
-H
-g
и т.д. затем systemd имеет все эти технические возможностиКороче говоря
$ sudo java -XX:+UseG1GC -Xmx1g -Xms512m -jar abc-program-0.0.1-SNAPSHOT.jar
может быть заменен
$ java -XX:+UseG1GC -Xmx1g -Xms512m -jar abc-program-0.0.1-SNAPSHOT.jar
Теперь перемещая его в саму единицу т.е.
Что препятствует тому, чтобы это работало?
ExecStart=java -XX:+UseG1GC -Xmx1g -Xms512m -jar abc-program-0.0.1-SNAPSHOT.jar
Возможно, ничто (это просто работает!)
Но его возможным путям нужна корректировка. Вы уже имеете
WorkingDirectory=/data/acloud/repository/lib
Я рекомендую изучить https://www.freedesktop.org/software/systemd/man/systemd.exec.html существует User=
Group=
Java на пути? Можно настроить ENV ПУТИ, переменный но самый простой измениться на
ExecStart=/fullpath/to/java -XX:+UseG1GC -Xmx1g…
(Измените полный путь как соответствующий Вам),
Это все еще работает? Я подозреваю не …
Таким образом, что происходит, если Вы работаете (в оболочке) (Примечание НЕТ &
в конце)
$ sudo java -XX:+UseG1GC -Xmx1g -Xms512m -jar abc-program-0.0.1-SNAPSHOT.jar
Если это делает свое задание и выходит, Вам нужно
type=oneshot
Если это продолжает бежать на переднем плане (т.е. это 'зависает', пока не уничтожено), Вам нужно
type=simple
Если это сразу возвращается с демоном, работающим в фоне, Вам нужно
type=forking
Если это является третьим, также необходимо предоставить
PIDFile=/path/to/service/pidfile
Если первое Вам нужно
RemainAfterExit=yes