Мы разрабатываем приложение Linux для работы с разными дистрибутивами RedHat / SUSE. Ожидается, что это приложение (а именно, демон) будет автоматически запускаться при запуске, поэтому мы помещаем наш сценарий запуска в каталог /etc/init.d/ и создаем символические ссылки в каталогах уровня запуска (../rc.d/rc5.d/, для пример). Если пользователь удаляет наше приложение, наш сценарий удаления удаляет все наши файлы, включая символические ссылки. Он отлично работает, если ОС не поддерживает параллельный запуск сценария. Если параллельная работа включена, нам нужно другое решение. Например, в SLES 10 в / etc / sysconfig / boot:
# Run all scripts or rather start/stop all services
# which are independent from each other in parallel.
RUN_PARALLEL="yes"
Насколько мы понимаем, мы должны зарегистрировать наш скрипт с помощью утилиты insserv. В этом случае система анализирует заголовок скрипта и самостоятельно создает / удаляет символические ссылки. Если это правда, то как организовать установку / удаление нашего приложения, чтобы охватить как параллельный, так и последовательный запуск скрипта? Похоже, мы должны вести себя по-другому, когда параллельный запуск отключен или включен. В первом случае мы должны сами позаботиться о символических ссылках. Во втором случае мы должны передать его insserv. Это правильный подход? Если это правда, должны ли мы проанализировать, включен ли параллельный запуск, проверив / etc / sysconfig / boot? Это выглядит ненадежным, потому что в разных дистрибутивах Linux может быть разное местоположение и разные параметры.
Как лучше всего установить / удалить приложение Linux, которое охватывает как параллельный, так и последовательный запуск системы?
Спасибо,
позвольте insserv создать для вас символические ссылки. при использовании insserv вы также можете добавить зависимости в заголовок вашего скрипта, чтобы insserv знал, когда запускать и останавливать скрипт на специальном уровне выполнения. это необходимо для последовательного и параллельного выполнения. попробуй быть совместимым с lsb. вот небольшой пример:
# Following lines are in conformance with LSB 1.2 spec
### BEGIN INIT INFO
# Provides: your shoort app name here
# Required-Start: what should start before your app, e.g. network
# Required-Stop: what should stop before your app stops
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: longer about
### END INIT INFO