linux: определение, выполняется ли запущенный скрипт init.d как часть последовательности запуска системы
Я пишу сценарий init.d, который должен запускать команды с определенными параметрами, если он выполнялся при запуске системы. Тот же сценарий должен запускать команды с другими параметрами, если пользователь выполнял сценарий вручную.
Например, в сетевом скрипте, если он запускается при запуске системы, определенный сетевой интерфейс не будет задействован в зависимости от того, должны ли они быть настроены ONBOOT. В противном случае, если пользователь вручную запускает сетевой сценарий (запуск служебной сети), все сетевые интерфейсы будут активированы.
Один из способов добиться этого - создать файл с именем "/tmp/.boot" из родительского сценария rc, который удаляется после выполнения всех сценариев запуска. А затем в сценарии инициализации проверьте наличие файла /tmp/.boot, чтобы определить, выполняется ли сценарий как часть последовательности запуска или нет.
Мне было интересно, существует ли какой-либо существующий способ узнать, что система находится в своей последовательности загрузки. Может ли что-то в /proc/ или в другом месте сказать мне, что система находится в своей последовательности загрузки?
Ждем ваших предложений.
Спасибо и С уважением ~ Самер
1 ответ
Во-первых, состояние в /proc не должно сильно отличаться для многих сценариев. Уровень выполнения указывает, находитесь ли вы в начальной фазе загрузки (runlevel
дает доступ к нему), но при средней загрузке запуска запуска уровень S остается.
Тем не менее, это не плохо, и попытка написать сценарии, которые изменяют поведение в зависимости от уровня выполнения, является злом. Undebugable. Вместо этого вы можете просто попробовать другие аргументы командной строки, например, start-all вместо start. Или вы разделяете скрипт RC, как это делает Debian.