Назад | Перейти на главную страницу

Chkconfig игнорирует зависимости служб

Итак, у меня есть эти 2 файла:

/etc/init.d
    - service1
    - service2

service2 как:

#!/bin/sh
# chkconfig: 2346 95 45
# description: desc
# processname: service2

### BEGIN INIT INFO
# Provides:          service2
# Required-Start:    service1
# Required-Stop:     service1
# Default-Start:     2 3 4 6
# Default-Stop:      0 6
# Short-Description: desc
# Description:       long desc
### END INIT INFO
export JAVA_HOME="/opt/java/jre"
export PATH=$JAVA_HOME/bin:$PATH
/opt/do/something.sh $*

Хочу, при нормальной загрузке и перезагрузке, service2 начать после service1 заканчивается (около 12 минут, это приложение-сервер), но они запускаются почти одновременно, и это прерывается service2.

Почему сервисная система игнорирует установленные мной зависимости? Что-то не так? Есть ли способ проверить правильность выполнения порядка загрузки?

Я использую RHEL7, и обе службы были успешно добавлены с помощью

chkconfig --add <service_name>

Спасибо

Как сказал Майкл Хэмптон в комментариях, вы должны преобразовать свои скрипты инициализации старого стиля в единицы systemd.

Однако у вас могут быть причины продолжать использовать скрипты SysVinit старого стиля.

В вашем сценарии может быть одна проблема: я, кажется, припоминаю, что раньше было требование, чтобы не должно быть пустых строк перед ### BEGIN INIT INFO линия.

Я не могу найти это требование в текущий документ стандартов LSB но я думаю, что однажды я решил аналогичную проблему, удалив пустые строки перед разделом INIT INFO. Если мне не изменяет память, это может объяснить, почему ваши зависимости не соблюдаются.

Кроме того, зависимости в сценариях SysVinit не обязательно относятся к реальным службам, а только к самим сценариям: RHEL7 systemd запустит service2 сценарий сразу после service1 скрипт завершен, независимо от того, запущен ли фактический процесс обслуживания service1 завершил запуск или нет. Итак, если для запуска ваших служб требуется нетривиальное время, сценарии должны явно дождаться полного запуска службы перед завершением работы.