linux: определение, выполняется ли запущенный скрипт init.d как часть последовательности запуска системы

Я пишу сценарий init.d, который должен запускать команды с определенными параметрами, если он выполнялся при запуске системы. Тот же сценарий должен запускать команды с другими параметрами, если пользователь выполнял сценарий вручную.

Например, в сетевом скрипте, если он запускается при запуске системы, определенный сетевой интерфейс не будет задействован в зависимости от того, должны ли они быть настроены ONBOOT. В противном случае, если пользователь вручную запускает сетевой сценарий (запуск служебной сети), все сетевые интерфейсы будут активированы.

Один из способов добиться этого - создать файл с именем "/tmp/.boot" из родительского сценария rc, который удаляется после выполнения всех сценариев запуска. А затем в сценарии инициализации проверьте наличие файла /tmp/.boot, чтобы определить, выполняется ли сценарий как часть последовательности запуска или нет.

Мне было интересно, существует ли какой-либо существующий способ узнать, что система находится в своей последовательности загрузки. Может ли что-то в /proc/ или в другом месте сказать мне, что система находится в своей последовательности загрузки?

Ждем ваших предложений.

Спасибо и С уважением ~ Самер

1 ответ

Решение

Во-первых, состояние в /proc не должно сильно отличаться для многих сценариев. Уровень выполнения указывает, находитесь ли вы в начальной фазе загрузки (runlevel дает доступ к нему), но при средней загрузке запуска запуска уровень S остается.

Тем не менее, это не плохо, и попытка написать сценарии, которые изменяют поведение в зависимости от уровня выполнения, является злом. Undebugable. Вместо этого вы можете просто попробовать другие аргументы командной строки, например, start-all вместо start. Или вы разделяете скрипт RC, как это делает Debian.

Другие вопросы по тегам