У меня есть служба 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
Также пробовал тип вилки