системный сервис Java и проблема перезапуска

Мне нужно иметь сервис (который запускает Java-фоновый процесс), который при перезапуске перезапускается. Основываясь на информации, найденной в интернете, я сделал этот «фальшивый сервис», который работает

[Unit]
Description=Fake Service
After=network.target

[Service]

Type=simple
#RemainAfterExit=yes
#Type=forking
PIDFile=/opt/fake-service/myservice.pid
User=root

ExecStart=/bin/bash /opt/fake-service/test.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

, а скрипт test.sh -

java -cp /opt/fake-service/mytest.jar it.Main 5000 > /opt/fake-service/output.log

, эта программа регистрирует каждые 5 секунд, и если я убиваю, он автоматически перезапускается (также, если эта строка не работает использовать, я сделал, но в статусе systemctl этот pid не используется)

Теперь мне нужно переключиться на реальную Java (более сложное приложение), для запуска которого требуется больший скрипт, потому что мне нужно установить много свойств и больше classpath (подключитесь к внешнему дБ и проверьте новые данные для использования).

Поэтому я изменил test.sh в

DUSR=myuser
            echo "Starting Service...in $PWD"
           # su -l ${DUSR} -c '/opt/fake-service/bin/start2.sh > /opt/fake-service/bin/output.log 2> /opt/fake-service/bin/error.log &'
           /opt/fake-service/bin/start2.sh > /opt/fake-service/bin/output.log 2> /opt/fake-service/bin/error.log &

и start2.sh - это

...setting all I need ......    

$JAVA_HOME/bin/java "$MEMORY_JAVA_OPS" \
                       ...
                       ...
                       "file:$TEST_SERVICE_DIR/configuration/config.xml" &
    sleep 2
    umask 022; pgrep -f config.xml > /opt/fake-service/myservice.pid

Я также включил службу и при запуске ВМ запускаю службу. Но если я завершу процесс, служба НЕ перезапустится автоматически, а также systemctl start servicename не работает больше и systemctl status servicename он мне дает старая информация, как будто последний запуск никогда не был выполнен.

Я также пытался изменить службу с

Type=simple

на

RemainAfterExit=yes
Type=forking

Может кто-нибудь помочь мне? Почему часто в различных скриптах теста systemctl не возвращает ошибку, поэтому я не могу понять проблему? Я также протестировал некоторые команды, такие как

journalctl -u myservice.service -b

и другие подобные, но никогда не возвращал ошибок, которые могут помочь мне понять, в чем заключается цепочка сценариев!

PS: я использую Centos7

0
задан 17 September 2019 в 13:05

0 ответов

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

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