LINUX下/ect/rc.d/目录的作用 (redhat启动顺序)

本文详细介绍了 Redhat Linux 的启动过程及其执行顺序,包括加载内核、执行 init 程序、运行 rc.sysinit 脚本、根据运行级别执行相应的 rc 脚本、执行 rc.local 脚本等关键步骤。此外还解释了 /etc/rc.d/rc 在不同运行级别下如何通过调用特定脚本来启动服务。

init.d/ :各种服务器和程序的二进制文件存放目录。
rcx.d/: 各个启动级别的执行程序连接目录。里头的东西都是指向init.d/的一些软连接。具体的后边叙述。
还有三个脚本:rc.sysinit, rc, rc.local

redhat的启动方式和执行次序是:
加载内核
执行init程序
/etc/rc.d/rc.sysinit # 由init执行的第一个脚本
/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式
/etc/rc.d/rc.local
/sbin/mingetty # 等待用户登录

在Redhat中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作,包括:
调入keymap以及系统字体
启动swapping
设置主机名
设置NIS域名
检查(fsck)并mount文件系统
打开quota
装载声卡模块
设置系统时钟
等等。

你在/etc/inittab文件中可以设置运行级别

/etc/rc.d/rc则根据其参数指定的运行模式来执行相应目录下的脚本。凡是以Kxx开头的
,都以stop为参数来调用;凡是以Sxx开头的,都以start为参数来调用。调用的顺序按xx
从小到大来执行。例如,假设缺省的运行模式是3,/etc/rc.d/rc就会按上述方式调用
/etc/rc.d/rc3.d/下的脚本。
值得一提的是,Redhat中的运行模式2、3、5都把/etc/rc.d/rc.local做为初始化脚本中
的最后一个,所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登录之前执行的命令。

init在等待/etc/rc.d/rc执行完毕之后(因为在/etc/inittab中/etc/rc.d/rc的
action是wait),将在指定的各个虚拟终端上运行/sbin/mingetty,等待用户的登录。
至此,LINUX的启动结束。

<think>好的,我需要回答用户关于Linux系统中/etc/rc.d文件夹下的文件是否在开机时自动执行的问题,以及相关的条件和机制。首先,我得回忆一下Linux启动过程的知识,并结合提供的引用内容来验证。 根据引用3,Linux启动过程包括init进程读取/etc/inittab文件,确定默认的运行级别,然后执行对应/etc/rcN.d目录下的脚本。这里的N代表运行级别,比如级别3或5。每个rcN.d目录中的脚本以S或K开头,分别表示启动和停止服务。这些脚本实际上是指向/etc/init.d或/etc/rc.d/init.d目录中实际脚本的符号链接。 用户提到的/etc/rc.d文件夹,可能在不同的发行版中结构有所不同。比如在Red Hat系系统中,/etc/rc.d目录下包含init.d和rcN.d等子目录。引用4提到,Redhat的运行级别2、3、5会执行/etc/rc.d/rc.local作为最后的脚本。因此,/etc/rc.d下的文件是否自动执行,取决于它们是否被正确链接到对应运行级别的rcN.d目录中,并且文件名以S开头,后面跟着数字决定执行顺序。 另外,引用5说明,/etc/rc#.d目录中的脚本以K或S开头,K开头的脚本先执行(用于停止服务),然后执行S开头的(用于启动)。这些脚本其实是符号链接,指向/etc/init.d中的实际脚本。所以,如果/etc/rc.d下有这些符号链接,它们会在开机时按顺序执行。 还要注意,不同的发行版可能将init脚本存放在/etc/init.d或/etc/rc.d/init.d中,但功能类似。比如引用1提到Redhat的执行顺序中,/etc/rc.d/rc.sysinit是第一个执行的脚本,然后是/etc/rc.d/rc根据运行级别执行对应目录脚本,接着是rc.local。 总结来说,/etc/rc.d下的文件是否自动执行,要看它们是否属于对应运行级别的启动脚本,即位于/etc/rc.d/rcN.d目录中,并以S开头。此外,/etc/rc.d/rc.local也会在最后执行,用户可以在这里添加自定义命令。</think>Linux系统中$`/etc/rc.d`$文件夹下的文件是否会在开机时自动执行,取决于其具体子目录和文件类型。以下是关键机制和条件的分析: --- ### **一、自动执行的核心条件** 1. **文件位置** - 脚本必须位于$`/etc/rc.d/rcN.d`$目录中(N为运行级别,例如3或5) - 或位于$`/etc/rc.d/rc.local`$文件中(需检查是否具有可执行权限) 2. **命名规则** - 在$`/etc/rc.d/rcN.d`$目录下,脚本需以特定前缀命名: - **S**开头:启动服务(如$`S01network`$) - **K**开头:停止服务(如$`K05iptables`$) - 执行顺序由数字决定,例如$`S01`$比$`S10`$更早执行。 3. **文件类型** - 实际是**符号链接**,指向$`/etc/rc.d/init.d`$或$`/etc/init.d`$中的真实脚本[^3][^5]。 --- ### **二、执行机制** Linux系统启动时按以下流程触发$`/etc/rc.d`$相关脚本: 1. **内核加载后**,init进程读取$`/etc/inittab`$确定默认运行级别(如3或5)[^3]。 2. **执行系统初始化脚本**: - 优先执行$`/etc/rc.d/rc.sysinit`$,完成基础系统配置(如挂载文件系统)[^1]。 3. **按运行级别执行脚本**: - 调用$`/etc/rc.d/rc N`$(N为运行级别),依次运行$`/etc/rc.d/rcN.d`$中所有以**S**开头的脚本[^3][^4]。 4. **最后执行用户自定义脚本**: - 执行$`/etc/rc.d/rc.local`$(需检查权限)[^4][^5]。 --- ### **三、验证方法** 1. **检查运行级别** ```bash systemctl get-default ``` 2. **查看对应目录** ```bash ls /etc/rc.d/rc3.d/ # 假设运行级别为3 ``` 3. **手动触发测试** ```bash /etc/rc.d/init.d/script_name start # 直接执行初始化脚本 ``` --- ### **四、示例流程(运行级别5)** 1. 内核加载 → init进程启动 2. 执行$`/etc/rc.d/rc.sysinit`$[^1] 3. 执行$`/etc/rc.d/rc 5`$,运行$`/etc/rc.d/rc5.d/S*`$脚本 4. 执行$`/etc/rc.d/rc.local`$[^4] 5. 启动登录管理器(如GDM/KDM)[^3] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值