/etc/rc.d/rc与/etc/rc.d/init.d的关系介绍

2024-05-07 10:38
文章标签 init 介绍 关系 etc rc

本文主要是介绍/etc/rc.d/rc与/etc/rc.d/init.d的关系介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里先解释一下 /etc/rc.d/init.d 里面放的都是什么东西。这个目录存放的是一些脚本,一般是Linux以rpm包安装时设定的一些服务的启动/关闭脚本。系统在安装时装了好多rpm包,这里面就有很多对应的脚本。执行这些脚本可以用来启动、停止、重启这些服务
前面说到,/etc/rc.d/init.d这个目录下的脚本就类似与windows中的注册表,在系统启动的时候执行。程序运行到这里(init进程读取了运行级别),相信从命名的角度大家也能猜到该运行/etc/rc.d/init.d里面的脚本了,不然它为什么也叫init(.d)呢是吧。没错,是该运行init.d里的脚本了,但是并不是直接运行,而是有选择的,因为系统并不需要启动所有的服务。 


复制代码
代码如下:

[jianbao@localhost rc.d]$ pwd 
/etc/rc.d 
[jianbao@localhost rc.d]$ ll 
drwxr-xr-x. 2 root root 4096 5月 2 14:53 init.d 
-rwxr-xr-x. 1 root root 2617 6月 23 2012 rc 
drwxr-xr-x. 2 root root 4096 5月 2 14:53 rc0.d 
drwxr-xr-x. 2 root root 4096 5月 2 14:53 rc1.d 
drwxr-xr-x. 2 root root 4096 5月 2 14:53 rc2.d 
drwxr-xr-x. 2 root root 4096 5月 2 15:35 rc3.d 
drwxr-xr-x. 2 root root 4096 5月 2 14:53 rc4.d 
drwxr-xr-x. 2 root root 4096 5月 2 14:53 rc5.d 
drwxr-xr-x. 2 root root 4096 5月 2 14:53 rc6.d 
-rwxr-xr-x. 1 root root 220 6月 23 2012 rc.local 
-rwxr-xr-x. 1 root root 19370 6月 23 2012 rc.sysinit 
[jianbao@localhost rc.d]$ 


那么,系统是如何选择哪些需要启动哪些不要呢?这时刚才说的运行级别就起作用了。 
在决定了系统启动的run level之后,先执行 /etc/rc.d/rc 这个脚本。在CentOS6.X的源码中它都是一上来就check_runlevel(),知道了运行级别之后,对于每一个运行级别,在rc.d下都有一个子目录分别是rc0.d,rc1.d ….. rc6.d。每个目录下都是到init.d目录的一部分脚本的一些链接。每个级别要执行哪些服务就在相对应的目录下,比如级别5要启动的服务就都放在 rc5.d下,但是放在这个rc5.d下的都是一些链接文件,链接到init.d中相对应的文件,真正干活的是init.d里的脚本。 


复制代码
代码如下:

[jianbao@localhost rc5.d]$ pwd 
/etc/rc.d/rc5.d 
[jianbao@localhost rc5.d]$ ll 
lrwxrwxrwx. 1 root root 16 4月 11 14:52 K01smartd -> ../init.d/smartd 
lrwxrwxrwx. 1 root root 17 4月 11 14:40 K02oddjobd -> ../init.d/oddjobd 
lrwxrwxrwx. 1 root root 17 4月 11 14:52 K05wdaemon -> ../init.d/wdaemon 
lrwxrwxrwx. 1 root root 16 4月 11 14:52 K10psacct -> ../init.d/psacct 
lrwxrwxrwx. 1 root root 19 4月 11 14:40 K10saslauthd -> ../init.d/saslauthd 
lrwxrwxrwx. 1 root root 15 4月 11 14:40 K15httpd -> ../init.d/httpd 
lrwxrwxrwx. 1 root root 13 4月 11 14:44 K60nfs -> ../init.d/nfs 
lrwxrwxrwx. 1 root root 20 4月 11 14:44 K69rpcsvcgssd -> ../init.d/rpcsvcgssd 
lrwxrwxrwx. 1 root root 16 4月 11 14:55 K73ypbind -> ../init.d/ypbind 
lrwxrwxrwx. 1 root root 14 4月 11 15:11 K74ntpd -> ../init.d/ntpd 
lrwxrwxrwx. 1 root root 17 4月 11 14:40 K75ntpdate -> ../init.d/ntpdate 
lrwxrwxrwx. 1 root root 24 4月 11 14:40 S23NetworkManager -> ../init.d/NetworkManager 
lrwxrwxrwx. 1 root root 21 4月 11 16:27 S30vboxadd-x11 -> ../init.d/vboxadd-x11 
lrwxrwxrwx. 1 root root 25 4月 11 16:27 S35vboxadd-service -> ../init.d/vboxadd-service 
lrwxrwxrwx. 1 root root 19 4月 11 14:49 S50bluetooth -> ../init.d/bluetooth 
lrwxrwxrwx. 1 root root 14 4月 11 14:52 S55sshd -> ../init.d/sshd 
lrwxrwxrwx. 1 root root 13 4月 11 14:39 S95atd -> ../init.d/atd 
lrwxrwxrwx. 1 root root 15 5月 2 14:53 S95jexec -> ../init.d/jexec 
lrwxrwxrwx. 1 root root 20 4月 11 14:40 S99certmonger -> ../init.d/certmonger 
lrwxrwxrwx. 1 root root 11 4月 11 14:39 S99local -> ../rc.local 
[jianbao@localhost rc5.d]$ 


到这里,估计大家可能都比较清楚了,我开始也以为是这样的。可是后来我仔细看过和比较这些链接文件和init.d里真正被执行的脚本的文件名之后,一直有几个问题没弄明白。借着写这个文章的机会,我做了一些功课,总算是大概解开了那些疑惑。 

1、这些链接文件前面为什么会带一个Kxx或者Sxx呢? 
是这样的,带K的表示停止(Kill)一个服务,S表示开启(Start)的意思 

2、K和S后面带的数字呢?干什么用的? 
这个我开始的时候还以为是排列起来好看或者数数用呢(是不是很幼稚?)。后来发现不是的。它的作用是用来排序,就是决定这些脚本执行的顺序,数值小的先执行,数值大的后执行。很多时候这些执行顺序是很重要的,比如要启动Apache服务,就必须先配置网络接口,不然一个没有IP的机子来启动http服务那岂不是很搞笑。。。 

3、无意中我发现同一个服务带S的和带K的链接到init.d之后是同一个脚本。我就纳闷了,为什么会是执行同一个脚本呢? 
这个时候真是S和K的妙用了,原来S和K并不止是用来看起来分的清楚而已。S给和K还分别给init.d下面的脚本传递了start和stop的参数。哦,是这样的(焕然大悟的样子,呵呵)!这时我才想起来原来曾经无数用过的/etc/rc.d/init.d/network restart命令。原来传S时相当于执行了/etc/rc.d/init.d/xxx start这条命令,当然K就相当于/etc/rc.d/init.d/xxx stop了。 

补充:也可以修改rc.local达到自启动的目的,但是rc.local是最后执行的自启动配置文件。



来源:http://www.jb51.net/LINUXjishu/86332.html

这篇关于/etc/rc.d/rc与/etc/rc.d/init.d的关系介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967122

相关文章

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

一文带你搞懂Python中__init__.py到底是什么

《一文带你搞懂Python中__init__.py到底是什么》朋友们,今天我们来聊聊Python里一个低调却至关重要的文件——__init__.py,有些人可能听说过它是“包的标志”,也有人觉得它“没... 目录先搞懂 python 模块(module)Python 包(package)是啥?那么 __in

Python中__init__方法使用的深度解析

《Python中__init__方法使用的深度解析》在Python的面向对象编程(OOP)体系中,__init__方法如同建造房屋时的奠基仪式——它定义了对象诞生时的初始状态,下面我们就来深入了解下_... 目录一、__init__的基因图谱二、初始化过程的魔法时刻继承链中的初始化顺序self参数的奥秘默认

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir