Отложить выполнение сценария инициализации до завершения другого процесса?

Отложить выполнение сценария инициализации до завершения другого процесса?

Я запускаю Debian Jessie. Во время запуска я хочу прочитать некоторый пользовательский ввод. Это делается с помощью пользовательского скрипта в /etc/init.d/ и символических ссылок в каталогах уровня запуска. Теперь я хочу kdm, чтобы , который запускается другим скриптом init, запускался только после завершения моего пользовательского скрипта.

Я добился этого, добавив что-то вроде

while test -e /tmp/kdm-boot-lock
do
    echo "waiting for lock-file to be deleted by custom-script"
    sleep 1
done

в /etc/init.d/kdm

но я бы предпочел решение без изменения внешних файлов (которые могут быть изменены обновлениями).

Итак, вопрос: как я могу предотвратить kdmзапуск отдельного (неизмененного) сценария инициализации ( ) до завершения моего пользовательского сценария?

решение1

Поскольку вы используете initscripts, правильный способ отложить kdmвыполнение до завершения вашего пользовательского скрипта — объявить зависимость от kdmвашего пользовательского скрипта в заголовке LSB:

# Required-Start: ... yourscript

в kdminitscript и

# Provides: yourscript

в вашем пользовательском скрипте инициализации.

kdmЧтобы избежать потери изменений в initscript при обновлениях, вы можете скопировать его заголовок LSB в insservфайл переопределения /etc/insserv/overrides(с тем же именем) и отредактировать его.

Связанный контент