zoukankan      html  css  js  c++  java
  • /etc/inittab文件详解

    /etc/inittab由/sbin/init程序解析调用,用于系统初始化,/sbin/init可参考源码busybox中init.c的实现方式。

    原址如下:

    http://leejia.blog.51cto.com/4356849/788895

    /etc/inittab文件详解

    Linux系统的启动过程为:加电自检-->根据BIOS中的设置从指定的设备启动-->找到设备MBR中的bootloader引导启动系统-->启动kernel-->启动init进程

        我们看到,Linux系统启动的最后是启动init进程,而init进程是怎么工作的呢?init进程就是根据/etc/inittab这个文件来在不同的运行级别启动相应的进程或执行相应的操作。
        
        /etc/inittab这个文件中定义的登记项都是以:隔开的四个段,即:
     
        id:runlevels:action:process
       
        id:它是每个登记项的标识符,用于唯一标识每个登记项,不能重复
     
        runlevels:系统的运行级别,表示process的action要在哪个级别下运行,该段中可以定义多个运行级别,各级别之间直接写不用分隔符;如果为空,表示在所有的运行级别运行。Linux的运行级别有:
        0:表示关机
        1:表示单用户模式,在这个模式中,用户登录不需要密码,默认网卡驱动是不被加载,一些服务不能用。
        2:表示多用户模式,NFS服务不开启
        3,表示命令行模式
        4,这个模式保留未用
        5,表示图形用户模式
        6,表示重启系统
     
        action:表示对应登记项的process在一定条件下所要执行的动作。
        具体动作有:
        respawn:当process终止后马上启动一个新的
        wait:当进入指定的runlevels后process才会启动一次,并且到离开这个runlevels终止
        initdefault:设定默认的运行级别,即我们开机之后默认进入的运行级别,不能是0,6,你懂的
        sysinit:系统初始化,只有系统开机或重新启动的时候,这个process才会被执行一次
        powerwait:当init接收到电源失败信号的时候执行相应的process,并且如果init有进程在运行,会等待这个进程完成之后,再执行相应的process
        powerfail:当init接收到电源失败信号的时候执行相应的process,并且如果init有进程在运行,不会等待这个进程完成,它会直接执行相应的process
        powerokwait:电源已经故障,但是在等待执行对应操作的时候突然来电了就执行对应的process
        powerfailnow:当电源故障并且init被通知UPS电源已经快耗尽执行相对应的process
        ctrlaltdel:当用户按下ctrl+alt+del这个组合键的时候执行对应的process
        boot:只有在引导过程中,才执行该进程,但不等待该进程的结束;当该进程死亡时,也不重新启动该进程
        bootwait:只有在引导过程中,才执行该进程,并等待进程的结束;当该进程死亡时,也不重新启动该进程
        off:如果process正在运行,那么就发出一个警告信号,等待20秒后,再通过杀死信号强行终止该process。如果process并不存在那么就忽略该登记项
        once:启动相应的进程,但不等待该进程结束便继续处理/etc/inittab文件中的下一个登记项;当该进程死亡时,init也不重新启动该进程
     
        process:表示启动哪个程序或脚本或执行哪个命令等
     
     
        以redhat enterprise server 5.4为例。我们分析一下/etc/inittab文件:
        行首为“#”的是注释行,没有作用
        
        id:3:initdefault:
        第一个字段为标识符,下面我们就不说了。这个登记项表示我们默认的运行级别是3,也就是说我们默认开机启动会进入命令行模式。
     
        si::sysinit:/etc/rc.d/rc.sysinit(不同版本大同小异,我的为/etc/rc.d/rc.init)
        所所有的运行级别下,init依赖/etc/rc.d/rc.sysinit这个脚本对系统进行初始化。而/etc/rc.d/rc.sysinit的作用主要是:
        1,激活udev和selinux
        2,根据/etc/sysctl.conf文件设定内核参数
        3,设定系统时钟
        4,键盘的键映射,即识别键盘
        5,启用swap分区
        6,设定主机名
        7,根文件系统检测及重新以读写方式挂载
        8,激活RAID和LVM设备
        9,启用磁盘配额
        10,检测及挂载其他文件系统(挂载/etc/fstab中定义的设备)
        11,清除过期的锁和PID文件
     
        l0:0:wait:/etc/rc.d/rc 0
        l1:1:wait:/etc/rc.d/rc 1
        l2:2:wait:/etc/rc.d/rc 2
        l3:3:wait:/etc/rc.d/rc 3
        l4:4:wait:/etc/rc.d/rc 4
        l5:5:wait:/etc/rc.d/rc 5
        l6:6:wait:/etc/rc.d/rc 6
        当进入n运行级(n就是上面所定义的运行级别),会把/etc/rc.d/rc*.d(*表示对应登记项process字段rc后的数字)这个目录中所有以S开头的文件启用,把以K开头的文件给禁用,并且这些文件只在进入相应的运行级别时执行一次,退出此运行级别失效。所以每个运行级别的服务是独立的,而/etc/rc.d/rc*.d这个目录中存放的是在对应级别下所要开启和禁用的服务的文件。
     
        ca::ctrlaltdel:/sbin/shutdown -t3 -r now 
        在所有运行级别下,按下ctrl+alt+del时等待3秒钟后重新启动系统。这就是为什么我们按下这三键后重新启动系统
     
        pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
        在所有的运行级别下,如果电源故障,会给出提示信息,并且在2min后关机。
     
        pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
        在12345运行级别下,如果电源故障的时候,电源又恢复正常,则给出提示信息,并且立即终止关机。
     
        1:2345:respawn:/sbin/mingetty tty1
        2:2345:respawn:/sbin/mingetty tty2
        3:2345:respawn:/sbin/mingetty tty3
        4:2345:respawn:/sbin/mingetty tty4
        5:2345:respawn:/sbin/mingetty tty5
        6:2345:respawn:/sbin/mingetty tty6
        在2345运行级别下,会启用6个命令行界面的终端,并且一旦终端终止,就会在创建一个新的。这就是为什么我们的系统下会有6个命令行界面的终端。
     
        x:5:respawn:/etc/X11/prefdm -nodaemon
        只有我们进入5运行级别,会打开图形用户终端,并且一旦终端终止,就会再创建一个新的。你如果把这一行删了,你的图形界面还能用吗?你懂的
     
        Thus on!你是不是对linux又了解了很多呀!come on!
  • 相关阅读:
    查准率(precision)和查全率(recall)
    数据集大全:25个深度学习的开放数据集
    利用贝叶斯算法实现手写体识别(Python)
    KNN算法识别手写数字
    判断点在直线的左右哪一侧
    多节点bigchaindb集群部署
    java 多线程 3 synchronized 同步
    java 多线程 1 “常用的实现多线程的2种方式”:Thread 和 Runnable
    java 字符串
    java 关键字static
  • 原文地址:https://www.cnblogs.com/wangliangblog/p/10458254.html
Copyright © 2011-2022 走看看