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, это не то, для чего он предназначен
- Запустите сторожевой таймер при входе в систему (если это допустимая опция), например
.bashrc
,