.. title: Linux相关操作系统的起源进程 .. slug: .. date: Mon 20 Jan 2025 04:53:56 PM UTC Linux相关操作系统中,/etc/init.d,/etc/rc/init.d 的关系: /etc/init.d是/etc/rc/init.d软链接文件 Linux的引导过程 系统加电之后,首先进行的硬件自检,然后是bootload对系统的初始化,加载内核。 一旦内核启动运行,对硬件的检测就会决定需要对哪些设备驱动进行初始化。 内核挂装了根文件系统,并已初始化所有的设备驱动程序和数据结构等之后,就启动一个叫init的用户级程序,完成引导进程。 运行级别(run level) Init进程是系统启动之后的第一个用户进程,它的pid(进程编号)始终为1。 init进程读取/etc/目录下inittab文件中initdefault id值,这个值称为运行级别(run-level)。 它决定了系统启动之后运行于什么级别。 运行级别决定了系统启动的绝大部分行为和目的。不同的运行级定义如下:    # 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动) # 1 - 单用户模式 # 2 - 多用户,没有 NFS # 3 - 完全多用户模式(标准的运行级) # 4 – 系统保留的 # 5 - X11 (x window) # 6 - 重新启动 (千万不要把initdefault 设置为6,否则将一直在重启 ) linux 系统启动系统服务对应级别: * rc0: 停机(不能使用) * rc1: 单用户模式 * rc2: 多用户模式,但是没有NFS * rc3: 完全多用户模式 (常用常用常用) * rc4: 没有使用,系统预留 * rc5: 图形界面模式 * rc6: 重启模式(不能使用) init.d 目录存放一些脚本,一般是linux以rpm包安装时设定的一些服务的启动脚本。 执行这些脚本可以用来启动,停止,重启这些服务。 /etc/rc.d/init.d这个目录下的脚本就类似与windows中的注册表,在系统启动的时候执行。 程序运行到这里(init进程读取了运行级别),相信从命名的角度大家也能猜到该运行/etc/rc.d/init.d里面的脚本了, 不然它为什么也叫init(.d)呢是吧。没错,是该运行init.d里的脚本了, 但是并不是直接运行,而是有选择的因为系统并不需要启动所有的服务。 rc5.d下的都是一些链接文件,链接到init.d中相对应的文件,真正干活到init.d里的脚本。 这些链接文件前面为什么会带一个Kxx或者Sxx 带K的表示停止(Kill)一个服务,S表示开启(Start)一个服务。 K和S后面带的数字有什么用处 数字的作用是排序,决定脚本执行的顺序,数值小的先执行。 同一个服务,带S的和带K的链接到init.d之后是同一个脚本 S给和K还分别给init.d下面的脚本传递了start和stop的参数。 S相当于执行了/etc/rc.d/init.d/xxx start命令。 K相当于/etc/rc.d/init.d/xxx stop命令。