Запустить скрипт на уровне 1

Я пытаюсь запустить скрипт в runlevel 1 из /etc/inittab. Скрипт, который я хочу запустить, выглядит так:

#!/bin/bash
while [ 1 ]
do
  #do something
  sleep 1
  #do something
  sleep 1
done

на inittab строка выглядит так: d666:123456:respawn:/root/script_to_run.sh

в runlevel 2-6 все работает нормально. Когда я перехожу на уровень runlevel 1 (init 1) скрипт останавливается и больше не выполняется.

также я пытаюсь обработать скрипт, который будет вызван прямо перед вводом уровня запуска 0. Я пробовал эту строку в inittab:d667:0:wait:/root/script_to_run_right_before_runlevel_0.sh

28
задан arminb
09.01.2023 23:29 Количество просмотров материала 2414
Распечатать страницу

1 ответ

документация Debian не является явной,init(8) предостережения только о том,что уровни S,0,1, 6 зарезервированы, а также:

в системе Debian при входе на уровень runlevel 1 все процессы будут уничтожены, за исключением потоков ядра и скрипта, который убивает и другие процессы в своем сеансе. Как следствие, небезопасно возвращаться с уровня runlevel 1 на многопользовательский: демоны, запущенные на уровне runlevel S и необходимые для нормальной работы, отсутствуют продолжительный. Система должна быть перезагружена.

запустить уровень 1 в /etc/inittab is:

l1:1:wait:/etc/init.d/rc 1

/etc/init.d/rc 1 будем называть /etc/rc1.d/S* в том числе S01killprocs который убивает большинство вещей, которые он может найти, и S21single, которые выполняет "exec init -t1 S", для переключения в однопользовательский режим, поэтому runlevel 1 очень недолговечен. Однопользовательский режим "S" в /etc/inittab is:

~~:S:wait:/sbin/sulogin

что означает init будет просто ждать пока дождется sulogin возвращает ничего еще.

короче говоря, уровни "1" и "S" в Debian являются "hands-off" (и, вероятно, большинство других unixen тоже).

если вы положили запись inittab выше записи системы "S", то init respawning и S01killprocs скрипт будет бороться с этим некоторое время (вы не можете наблюдать это без запущенного системного журнала), что, вероятно, пикантно и, вероятно, не будет делать то, что вы хотите.

вы мая мочь к некоторому Из что вам нужно одним или обоими из изменение сценариев запуска и реализация /etc/initscipt для мониторинга и регистрации различных действий init. Это действительно хороший способ шланга рабочей системы, поэтому я предлагаю сначала поэкспериментировать в виртуальной машине; -).

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

1
отвечен mr.spuratic 2023-01-11 07:17

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх