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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 01 августа 2011

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

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

...