Что делает “переключение runlevel”, означают точно?

Что происходит, когда я выхожу sudo telinit n (n быть новым runlevel)? Делает init сканирования /etc/inittab и точно то же, когда система загружается? Например, если я имею

rm:2345:wait:/etc/rc.multi

в моем inittab, и я изменяю runlevel с 5 до 3. Делает /etc/rc.multi будьте повторно выполнены или это пропускается?

1
задан 28.04.2011, 15:50

1 ответ

Мой понимать изменения runlevels является этим init "diffs", который старый и новый runlevel и запускает / уничтожает сервисы, состояние которых будет измененный.

В данном примере, /etc/rc.multi не был бы повторно выполнен, потому что это уже работает. Если Вы имели rm:45:wait:/etc/rc.multi в Вашем /etc/inittab, и пошел от runlevel 5-> 3-> 5, /etc/rc.multi был бы уничтожен (-> 3) и затем запущен (-> 5), потому что это не установлено для runlevel 3.

Из страницы справочника:

Когда init требуют изменить runlevel, он отправляет сигналу тревоги SIGTERM во все процессы, которые не определены в новом runlevel. Это затем ожидает за 5 секунд до этого насильственно завершить эти процессы через сигнал SIGKILL.

/etc/inittab повторно сканируется, как Вы описали:

После того, как это породило все указанные процессы, init ожидает одного из своих порожденных процессов для смерти, сигнал сбоя питания, или пока это не сообщено telinit для изменения runlevel системы. Когда одно из вышеупомянутых трех условий происходит, оно вновь исследует/etc/inittab файл. Новые записи могут быть добавлены к этому файлу в любое время. Однако init все еще ожидает одного из вышеупомянутых трех условий произойти.

2
ответ дан 12.12.2019, 12:54

Теги

Похожие вопросы