linux's docs

2.3.0: linux-runlevel

什么是init?

init是initialization的简写,是unix和类unix系统中用来产生其他所有进程的程序,它以守护进程的形式存在,进程号为1

ps aux |grep init
root          1  0.1  0.1  19232  1500 ?        Ss   22:10   0:01 /sbin/init
root       1667  0.0  0.0 103308   888 pts/0    S+   22:31   0:00 grep init
## 分裂为BSD风格和SysV风格,其中SysV风格使用文件/etc/inittab
## 传统的init只负责同步执行开机顺序启动进程,关机前顺序关闭进程

init启动相关文件

  • /etc/init/rcS.conf : 系统初始化脚本
  • /etc/init/rc.conf : 私有runlevel启动脚本
  • /etc/rc.d/ : 用户启动进程存放目录,其中第三方服务的进程会根据runlevel存放在不同的目录中
# init的配置文件
vi /etc/inittab
***********************************************
...省略部分...
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)     # 关机
#   1 - Single user mode                          # 单用户模式
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)                    # 少了NFS的模式3
#   3 - Full multiuser mode                       # 命令行模式
#   4 - unused                                    # 预留模式
#   5 - X11                                       # 图形模式
#   6 - reboot (Do NOT set initdefault to this)   # 重启
id:3:initdefault:            # 更改第二段的数字可以修改默认runlevel
***********************************************

# 查看当前默认runlevel
who -r
         run-level 3  2016-04-24 22:17

什么是upstart(目前此项目已经被放弃,ubuntu转向了systemd)?

upstart是一个用来替代init的系统初始化程序,由canonical公司前雇员Scott James Remnant所写,改善了传统init的严格同步执行,改为基于事件的异步工作的初始化常驻进程。
特点:

  • 例如你在机器启动时插拔U盘和其他的存储/网络设备,upstart会改善init并对此类事件做出回应
  • upstart兼容传统的init,对SysV简单的过渡和完善的向后兼容是其明确的设计风格
  • RHEL6和CENTOS6均包含了upstart

Contents