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

init.d и удаленные файловые системы

В Стандартная базовая базовая спецификация ядра Linux, 22.4. Установка и удаление сценариев инициализации говорит:

Сценарий инициализации должен быть установлен в /etc/init.d (который может быть символической ссылкой на другое место) установщиком пакета.

У нас есть ситуация, когда в результате корпоративной политики и стандартных конфигураций виртуальных машин мы не можем устанавливать сторонние приложения с помощью стандартных установщиков пакетов (yum / rpm) или в места по умолчанию (/ opt и т. Д.). Вместо этого приложения должны быть установлены в раздел, подключенный к NFS (/ apps), что требует remote_fs. Мы используем еще init.d для управления остановкой / запуском.

Связанный вопрос, не обеспечивающий ясности: Linux /etc/init.d - символическая ссылка, жесткая ссылка или фактический файл?

Есть 2 варианта, оба с проблемами:

Второй вариант представляет проблему, даже если обертка говорит:

### BEGIN INIT INFO
# Required-Start:    $local_fs $network $remote_fs $syslog $time

С большой вероятностью требуется remote_fs еще не был доступен при запуске, поэтому файл, на который указывает символическая ссылка, недоступен для чтения блока INIT INFO, ожидающего remote_fs и другие услуги от (улов-22). При запуске появляется следующая ошибка (ps: /etc/init.d -> rc.d/init.d):

systemd-sysv-generator[509]: stat() failed on /etc/rc.d/init.d/myapp: No such file or directory

Я не могу быть первым, кто столкнется с этой проблемой, но не смог найти рекомендации по передовой практике.

Я рассматриваю возможность использования следующего обходного пути; хотел бы знать, есть ли неизвестные последствия, о которых я не знаю. Вместо символьной ссылки создайте "фиктивную" или "сквозную" оболочку в /etc/rc.d/init.d/myapp.

# chkconfig:         345 75 15
# description:       myapp
### BEGIN INIT INFO
# Provides:          myapp
# Required-Start:    $local_fs $network $remote_fs $syslog $time
# Required-Stop:     $local_fs $network $remote_fs $syslog $time
# Default-Start:     3 4 5
# Default-Stop:      0 1 2 6
# Short-Description: App Description
### END INIT INFO

/apps/myapp/bin/wrapper "$@"

Вроде нормально работает с точки зрения остановки / запуска и т. Д. Маловероятно, что изменится (когда-либо?), В отличие от рабочей части оболочки.

Все, что я упустил или не учел?