Как я удаляю удар из systemd сервисного файла? и замените его чем-то, что решает мою проблему, объясненную ниже?

Скучное предупреждение деталей: у Меня есть 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.

Я полагаю, что использование удара вызывает эту проблему, поскольку в кодах выхода не управляют здесь. Как я заставляю это останавливаться?

0
задан 23 February 2019 в 02:33

1 ответ

Удалите sudo

sudo является почти всегда ошибкой в systemd сценариях.

  • Если единица является системной единицей его лишнее
  • если не sudo перестанет работать, скорее всего,
  • если его используемый для других целей, например, -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
  1. Если это делает свое задание и выходит, Вам нужно

    type=oneshot
    
  2. Если это продолжает бежать на переднем плане (т.е. это 'зависает', пока не уничтожено), Вам нужно

    type=simple
    
  3. Если это сразу возвращается с демоном, работающим в фоне, Вам нужно

    type=forking
    

Если это является третьим, также необходимо предоставить

PIDFile=/path/to/service/pidfile

Если первое Вам нужно

RemainAfterExit=yes
1
ответ дан 26 October 2019 в 04:25

Другие вопросы по тегам:

Похожие вопросы: