Linux Runlevel 1: запуск программы

Я пытаюсь автоматически запустить процесс при вводе уровня запуска 1 от init 1, Это сторожевой таймер, который должен постоянно подавать сигнал жизни, поэтому на уровне выполнения 1 тоже! Но когда уровень запуска 1 вводится каждый процесс убит и система переключается на уровень запуска S, Я пытался сказать Linux, чтобы начать свой процесс update-rc.d -f watchdog 99 1 S ., Полученные записи в /etc/rc1.d/ а также /etc/rcS.d/ являются:

/etc/rc1.d/:

.
.
.
S30killprocs -> ../init.d/killprocs
S90single -> ../init.d/single
S99watchdog -> ../init.d/watchdog
.
.
.

/etc/rcS.d/:

.
.
.
S01glibc.sh -> ../init.d/glibc.sh
S02hostname.sh -> ../init.d/hostname.sh
S99watchdog -> ../init.d/watchdog
.
.
.

ps ax после уровня запуска 1 был введен, к сожалению, не возвращает мой сторожевой процесс. Я должен начать это вручную.

PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 init [S]
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:00 [ksoftirqd/0]
    4 ?        S      0:00 [kworker/0:0]
    5 ?        S      0:00 [kworker/u:0]
    6 ?        S      0:00 [rcu_kthread]
    7 ?        S<     0:00 [khelper]
    8 ?        S      0:00 [kworker/u:1]
  104 ?        S      0:00 [sync_supers]
  106 ?        S      0:00 [bdi-default]
  108 ?        S<     0:00 [kblockd]
  119 ?        S      0:00 [khubd]
  219 ?        S      0:00 [kswapd0]
  220 ?        S      0:00 [fsnotify_mark]
  221 ?        S<     0:00 [aio]
  314 ?        S<     0:00 [scsi_tgtd]
  347 ?        S<     0:00 [kpsmoused]
  349 ?        S      0:00 [kworker/0:1]
  366 ?        S      0:00 [w1_bus_master1]
  390 ?        S      0:00 [mmcqd/0]
  395 ?        S      0:00 [jbd2/mmcblk0p2-]
  396 ?        S<     0:00 [ext4-dio-unwrit]
  475 ?        S      0:00 [flush-179:0]
 4532 ttyS0    Ss     0:00 init [S]
 4533 ttyS0    S      0:00 bash
 4536 ttyS0    R+     0:00 ps ax

Система, над которой я работаю Debian GNU/Linux 5.0 debarm (Встроенный). Любые намеки или решение? Спасибо.

2 ответа

Решение

Я решил это, добавив следующую строку в /etc/inittab:

~~:S:wait:/etc/init.d/watchdog start
~~:S:wait:/sbin/sulogin

Примечание: должно быть раньше /sbin/sulogin,

Как сказано здесь:

Уровень выполнения 1 известен как однопользовательский режим. Более подходящим описанием будет режим "спасения" или "поиск и устранение неисправностей". На уровне выполнения 1 демоны (сервисы) не запускаются.

У вас есть несколько вариантов, чтобы обойти это ограничение:

  1. Не используйте уровень запуска 1, это не то, для чего он предназначен
  2. Запустите сторожевой таймер при входе в систему (если это допустимая опция), например .bashrc,
Другие вопросы по тегам