В RHEL 6.3 у меня есть системная служба, которая должна запускаться после postgresql и httpd (порядка 64 и 85 соответственно), но chkconfig всегда помещает ее в порядок 50. Я попробовал провести эксперимент на виртуальной машине CentOS 6.0, чтобы убедиться, что я понял синтаксис строфы LSB.
я создал /etc/init.d/foo
, владелец root, права 755, с этим текстом:
### BEGIN INIT INFO
# Provides: foo
# Required-Start: postgresql httpd
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Foo init script
### END INIT INFO
А потом побежал chkconfig --add foo
. Результат: /etc/rc5.d/S86foo
создается, как и ожидалось. (Остальные уровни выполнения также соответствуют ожиданиям.)
Я повторил тот же эксперимент на машине RHEL, и он создал /etc/rc5.d/S50foo
вместо. Я не вижу различий между ними, что привело бы к разным результатам. На обеих машинах postgresql и httpd запускаются с одинаковыми порядками и уровнями выполнения. Есть предположения? Я мог бы просто использовать # chkconfig: 2345 86 50
, или вручную переименовать символические ссылки службы в правильном порядке, но я пытаюсь задокументировать процесс установки для более поздних пользователей, и я хочу знать, как это сделать правильно, и понять, почему он не работает должным образом.
В системах RH вы должны использовать chkconfig
строка, как указано в документации:
https://fedoraproject.org/wiki/Packaging:SysVInitScript#.23_chkconfig:_line
Что касается строки chkconfig:
Строка chkconfig: в сценарии инициализации в стиле SysV используется для определения уровней запуска, на которых служба должна запускаться по умолчанию. Он также используется для установки «приоритета» или порядка, в котором службы запускаются на уровне выполнения. Все initscripts в стиле Fedora SysV должна быть эта строка.
Что касается заголовка LSB:
Каждый сценарий инициализации Fedora в стиле SysV, который должен запускаться по умолчанию на любом уровне выполнения, должен включать эту строку в заголовок LSB и должен соответствовать список уровней запуска, определенных для запуска в заголовок Chkconfig.