【问题标题】:Linux Runlevel 1: start programmLinux 运行级别 1:启动程序
【发布时间】:2013-02-12 15:14:26
【问题描述】:

当我通过init 1 进入运行级别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
.
.
.

在运行级别1 输入后的ps ax 遗憾地没有返回我的看门狗进程。我必须手动启动它。

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(嵌入式)。任何提示或解决方案?谢谢。

【问题讨论】:

    标签: linux debian runlevel


    【解决方案1】:

    here所说:

    运行级别 1 称为“单用户”模式。更贴切的描述 将是“救援”或“故障排除”模式。在运行级别 1 中,否 守护进程(服务)已启动

    您有多种选择来解决此限制:

    1. 不要使用运行级别 1,这不是它的用途
    2. 在登录时启动看门狗(如果这是一个有效的选项),例如.bashrc.

    【讨论】:

    • 那么有没有办法启动它呢?看门狗进程很重要,因为如果硬件看门狗无法识别任何生命信号,它会执行硬件重置。
    • 编辑了我的问题以添加替代方案。
    • @Satish RedHat 不是 Debian,实际上它们处理运行级别的方式不同,因为 (IIRC) RH 基于 System V 运行级别,而 Debian 基于 BSD 运行级别。
    • 选项 1 不是一个选项。选项 2 都不是因为我需要它在登录提示符下运行,而不是在我登录时运行。
    • 您没有说明为什么选项 1 不是选项。
    【解决方案2】:

    我通过在/etc/inittab 中添加以下行来解决它:

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

    注意:必须在/sbin/sulogin之前。

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 1970-01-01
      • 2018-12-23
      • 2014-05-07
      • 2011-12-13
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      相关资源
      最近更新 更多