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

Как операционная система узнает, какой параметр передать в /etc/init.d/?

Некоторое время я работаю с linux, но довольно просто.

Я понимаю, что скрипты в init.d выполняются при запуске ОС, но как именно это работает?

Как операционная система узнает, какой параметр передать скрипту?

Чтобы запустить apache, я бы сделал sudo /etc/init.d/apache2 start. Если я запускаю sudo /etc/init.d/apache2, он не работает без запуска. Как запускается передача ОС скрипту?

В зависимости от вашего дистрибутива и выпуска Linux, в конечном итоге сценарии sysvinit (эти сценарии в /etc/init.d/) обычно запускаются из символических ссылок, которые существуют в /etc/rc[0-6S].d, по /etc/init.d/rc.

В Ubuntu вы либо используете старый стиль sysvinit, или совсем недавно, upstart. В каталоге управления выскочкой (/etc/events.d/) вы найдете устаревший режим, который возвращается к /etc/init.d/rc призыв. В противном случае, /etc/init.d/rc вызывается для каждого уровня выполнения через /etc/inittab.

Если вы исследуете логику /etc/init.d/rc, вы обнаружите, что он определяет действия в зависимости от уровня запуска (0 & S безоговорочно остановлены) или префикса скрипта (S[0-9][0-9]* скрипты запускаются, K[0-9][0-9]* (убить) скрипты останавливаются). Нумерация скриптов в каталоге уровня запуска (например: /etc/rc1.d/) определяет порядок, в котором скрипты останавливаются или запускаются. Сначала запускаются сценарии уничтожения, затем запускаются сценарии.

Чтобы узнать больше об этом, исследуйте sysvinit и upstart.

Я предлагаю вам прочитать учебник о том, как работают уровни запуска и сценарии инициализации - http://www.debian-administration.org/article/212/An_introduction_to_run-levels кажется вполне понятным.

Короче говоря, сценарии вызываются не напрямую, а через символические ссылки в каталогах /etc/rc.d, где n = уровень выполнения. Имена символических ссылок имеют следующий формат:

[K | S] + nn + [string] 

где nn - это число, обозначающее порядок, в котором запускаются сценарии (сначала меньшие числа), а K или S определяют, запускать сценарий с параметром «стоп» или «запуск».