Как вернуть код возврата скрипта обратно в сервис systemd - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть служба systemd, которая вызывает скрипт запуска. Сценарий, в который я внес изменения, чтобы он не сработал, но даже если сценарий завершился неудачей и программный компонент не смог запуститься, состояние systemctl отображается активным. Код возврата скрипта был 0, потому что команда запуска внутри скрипта работает как фоновый процесс.

Следовал рекомендациям в ссылке ниже

https://serverfault.com/questions/751030/systemd-ignores-return-code-while-starting-service

разветвление не выполняетсяработать, потому что файл окружения, который у меня есть в сервисе, где он указывает на java_home и т. д., не передается в оболочку fork, и он терпит неудачу

systemd-notify только кажется, что имеет возможность вернуть READY = 1, каквернуть ненулевой код возврата, чтобы служба systemd знала, что запуск фактически не удался?

служба, как сейчас

[Service]
Type=notify
RemainAfterExit=yes
EnvironmentFile=/test/dir/envfile
User=idor
Group=idor    
ExecStart=/test/startup.sh
ExecStop=/test/stop.sh
TimeoutStopSec=180
Restart=no

сценарий во время тестирования команды notify start

./runengine & >>${LOG_FILE} &
sleep 20
if ! kill -0 $! 2>/dev/null; then
# Return 1 so that systemd knows the service failed to start
    systemd-notify READY=1
exit 1
fi

когда я запускаю скрипт вручную, я вижу его, если возвращаю $? как 1

Также пробовал тип вилки

...