Документация Debian не является явной, init(8)
предупреждает только, что зарезервированы уровни запуска S, 0,1,6, а также:
В системе Debian ввод уровня запуска 1 приводит к уничтожению всех процессов, кроме потоков ядра и сценария, который выполняет уничтожение и другие процессы в своем сеансе. Как следствие этого, небезопасно возвращаться с уровня выполнения 1 на многопользовательский уровень выполнения: демоны, которые были запущены на уровне выполнения S и необходимы для нормальной работы, больше не работают. Система должна быть перезагружена.
Запустите уровень 1 в /etc/inittab
:
l1:1:wait:/etc/init.d/rc 1
/etc/init.d/rc 1
вызовет /etc/rc1.d/S*
включая S01killprocs
который убивает большинство найденных вещей, и S21single
, который выполняет « exec init -t1 S
», чтобы переключиться в однопользовательский режим , поэтому уровень запуска 1 очень недолговечен. Однопользовательский режим "S" в /etc/inittab
:
~~:S:wait:/sbin/sulogin
Это означает, что init
просто будет ждать до тех пор, пока sulogin
вернется, прежде чем делать что-либо еще.
Короче говоря, уровни запуска "1" и "S" являются "невмешательством" в Debian (и, вероятно, в большинстве других unixen).
Если вы поместите свою запись inittab над системной записью "S", тогда init
respawning и сценарий S01killprocs
некоторое время будут бороться с этим (вы можете не заметить этого без работающего системного журнала), что, вероятно, очень быстро и, вероятно, выиграно делай что хочешь.
Вы можете получить что-то из того, что вам нужно, с помощью одного или обоих изменений сценариев запуска и реализации /etc/initscipt
для отслеживания и регистрации различных действий init
. Это действительно хороший способ подключить рабочую систему, поэтому я советую сначала поэкспериментировать с виртуальной машиной ;-).
Я думаю, что другие ваши варианты, ни один из которых не кажется очень привлекательным, - попробовать другой init
или посмотреть, можете ли вы делать то, что вы хотите через поток ядра.