/etc/inittab解析

来源:互联网 发布:虚拟机桥接网络连不上 编辑:程序博客网 时间:2024/05/21 06:48

# /etc/inittab, 格式是label:runlevel:action:process 

label是1~4个字符的标签,用来标示输入的值; 

  id 用来定义缺省的init运行的级别

  si 是系统初始化的进程

  ln 其中的n从1~6,指明该进程可以使用的runlevel的级别

  ud 是升级进程

  ca 指明当按下Ctrl+Alt+Del时运行的进程

  pf 指当UPS表明断电时运行的进程

  pr 是在系统真正关闭之前,UPS发出电源恢复的信号时需要运行的进程

  x 是将系统转入X终端时需要运行的进程

runlevel字段指定runlevel的级别;

action字段定义了该进程应该运行在何种状态下;

    boot 在系统启动时运行,忽略runlevel

  bootwait 在系统启动时运行,init等待进程完成。忽略runlevel

  ctrlaltdel 当Ctrl+Alt+Del三个键同时按下时运行,把SIGINT信号发送给init。忽略runlevel

  initdefault 不要执行这个进程,它用于设置默认runlevel

  kbrequest 当init从键盘中收到信号时运行。这里要求键盘组合符合KeyBoardSigral(参见/usr/share/doc/kbd-*关于键盘组合的文档)

  off 禁止进入,因此该进程不运行

  once 每一个runlevel级别运行一次

  ondemand 当系统指定特定的运行级别A、B、C时运行

  powerfail 当init收到SIGPWR信号时运行

  powerokwait 当收到SIGPWD信号且/etc/文件中的电源状态包含OK时运行

  powerwait 当收到SIGPWD信号,并且init等待进程结束时运行

  respawn 不管何时终止都重新启动进程

  sysinit 在运行boot或bootwait进程之前运行

  wait 运行进程等待输入运行模式

process字段包含init执行的进程,该进程采用的格式与在命令行下运行该进程的格式一样,因此process字段都以该进程的名字开头,紧跟着是运行时,紧跟着是运行时要传递。

busybox取消了runlevels,runlevels已经被busybox的init进程忽略。如果想使用runlevels,就使用sysvinit来代替。
每个入口的格式:<id>:<runlevels>:<action>:<process>
<id>: busybox的这个参数不是常规意义上的<id>,它是指指定进程运行的tty。其内容是/dev下的tty设备或者别名。这个字段留空表示忽略。指定错误,会得到异常。
<runlevels>: 被完全忽略,只需留空.
<action>: 有效的actions包括: sysinit, respawn, askfirst, wait,once,restart,ctrlaltdel, and shutdown.
askfirst和respawn类似,只是在运行进程前,先打印一句"Please press Enter to activate this console."等待用户敲入回车后再执行。
不能识别的<action>将导致init发送错误信号,并继续执行(只提示错误)。
<process>: 指定执行的进程和它的命令行。

如果busybox没有inittab也不影响,它将默认按以下处理:
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
如果发现/dev/console不是一个串口设备,将执行:
tty2::askfirst:/bin/sh
tty3::askfirst:/bin/sh
tty4::askfirst:/bin/sh

在shell前加一个'-'前缀表示是一个登陆shell,比如:
::askfirst:-/bin/sh;也可以指定登陆到哪个tty,比如:
tty2::askfirst:-/bin/sh
tty3::askfirst:-/bin/sh
tty4::askfirst:-/bin/sh
/sbin/getty可以指定选择某个tty.比如:
tty4::respawn:/sbin/getty 38400 tty5   /*  /sbin/getty 波特率 tty号  */
将串口输出到终端:
#::respawn:/sbin/getty -L ttyS0 9600 vt100
串口输出到modem:
#::respawn:/sbin/getty 57600 ttyS2

给该进程的参数。比如/sbin/shutdown -t3 -r now,该进程在按下Ctrl+Alt+Del时执行,在命令行下也可以直接输入来重新启动系统。

实例:
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
::once:/usr/sbin/telnetd -l /bin/login
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r

原创粉丝点击