init进程是Kernel初始化完成之后启动的第一个用户空间进程,PID为1,所有其它的进程都由此进程
fork()得来;
init进化:upstart, systemd等并行加速启动;
I. 配置文件/etc/inittab格式
id:runlevels:action:process
id,指定唯一标识;
runleves,指定该记录在哪些运行级别生效;
action,指定要采取的action;
process,指定要运行的程序;
RHEL6.x: upstart init
/etc/inittab
/etc/init/*.conf
II. inittab所配置的任务
- 设定默认运行级别
如果不设定,init会提示用户输入 - 运行系统初始化脚本
/etc/rc.d/rc.sysinit
2.1 激活udev和selinux;
2.2 根据/etc/sysctl.conf设定内核参数;
2.3 设定时钟时间;
2.4 装载键盘映射;
2.5 启用交换分区;
2.6 设置主机名;
2.7 根文件系统检测,并以读写方式重新挂载;
2.8 激活RAID和LVM设备;
2.9 启用磁盘配额;
2.10 根据/etc/fstab,检查并挂载其它文件系统;
2.11 清理过期的锁和PID文件; - 调用
/etc/rc.d/rc N, 运行/etc/rcN.d目录下的脚本 - 设定
Ctrl+Alt+Del组合键的操作 - 定义UPS相关操作
- 2345级别下创建虚拟终端
- 5级别下启动
xdm图形终端
III. /etc/rc.d/rc脚本
该脚本会到运行级别对应的目录中先遍历执行K开头的脚本,然后再遍历执行S开头的脚本;
这些脚本都链接到/etc/init.d/目录下的服务脚本,而/etc/init.d目录又链接到/etc/rc.d/init.d, 关系如下图:
由上可知,想在某个级别下开机启动某个服务,只需要在对应的目录下创建相应的链接即可; 手动创建的话可能比较麻烦,于是就有了自动添加链接的程序chkconfig。
chkconfig可以自动根据服务脚本在/etc/rc#.d目录下创建链接文件,但要求服务脚本含有以下两条指令:
2.1# chkconfig:runlevels SS KK: 表示在runlevels对应的脚本目录下创建优先级为SS的链接,-表示不创建S开头的链接; 在其余的runlevels对应的脚本目录下创建优先级为KK的链接;
2.2# description: 脚本功能的描述;chkconfig常用选项
--list [service]:显示系统所有服务[指定服务]及其开启状态;
--add service: 添加服务到chkconfig列表中,创建相应的链接文件;
--del service: 从chkconfig列表删除服务,并删除相应的链接文件;
--level [levels] service {off|on}: 修改服务运行级别,如不指定levels,默认为2345;
特别鸣谢: www.magedu.com
本文详细介绍了Linux系统中的init进程,它是Kernel初始化后的首个用户空间进程,所有其他进程均由它fork而来。文章还阐述了init进程的配置文件/etc/inittab的格式及作用,包括设置默认运行级别、运行初始化脚本等任务。

被折叠的 条评论
为什么被折叠?



