当前位置: 首页 > news >正文

Linux之init.d、rc.d文件夹说明

备注:Ubuntu没有rc.d文件夹,原因看问题四

Linux的几个重要文件

rc.d,init.d文件夹的说明

今天在研究mysql的安装的时候,最后一步要创建一个软连接,使得mysql服务可以自启动,代码如下:

ln -s /usr/local/mysql/bin/mysqld /etc/init.d/mysqld

这句Linux命令看着没什么问题,但是在网上搜索的时候,看到了另外一个版本,不同之处在于后面的路径是:

XXXXXXX /etc/rc.d/init.d/mysqld

看到这里,我产生了一点疑问,为什么两个文件夹不一样,却能实现一样的效果呢?之前简单研究过一些Linux开机自启动的东西,但是时间太长了,忘记了,所以又重新把这块儿捋了捋。

首先进入/etc目录下,可以看到这里有两个init相关的目录,分别是init和init.d,如下:

再看看rc相关的目录,可以发现,有11个相关的目录,如下:

不着急,一个一个分析,首先看看init相关的目录。

问题1:init目录和init.d目录有什么区别?

进入init目录观察,如下:

我们可以看到,里面都是一些配置文件,而进入init.d目录,可以看到:

里面都是各种各样的可执行文件,通过ll命令可以看到,init.d目录是rc.d/init.d目录的软连接,也就是说,这个目录和rc.d里面的init.d目录的内容保持一致。

通过将两者对比并查阅相关资料,得到如下结论:

1. /etc/init.d里的shell脚本(SysVinit工具所包含的函数库)能够响应start,stop,restart,reload命令来管理某个具体的应用。这些脚本也可被其他trigger直接激活执行,这些trigger被软连接在/etc/rcN.d/中。

2. /etc/init包含的是Upstart(Sysinit的替代版本)的配置文件,和/etc/init.d的作用几乎差不多。这样似乎/etc/init 可以看作 /etc/init.d 的演化版本。而Sysinit脚本是和新的Upstart兼容的。这就是这两个文件目录的来历和前世今生。.d 文件夹主要是为了方便和清楚的逻辑描述而命名成这样。

问题2:etc/init.d目录和etc/rc.d/init.d目录有什么区别?

其实是一样的,init.d是rc.d/init.d的一个软连接,内容都相同。

看完init.d命令,再来看看rc.d目录

问题3:rc.d目录和rc*.d目录有什么区别?

这里先看一张图,这是rc.d文件夹中的内容:

通过上面的图我们可以得到结论,rc0.d,rc1.d等等一系列的文件夹,都在rc.d文件夹里面,而rc.d文件夹外面的rc0.d文件都是软连接,连接的内容也正是rc.d文件夹里面的内容。

问题4:为什么要创建init.d软连接?

         其实他们都是用来放服务脚本的,当Linux启动时,会寻找这些目录中的服务脚本,并根据脚本的run level确定不同的启动级别。

        在制作服务脚本的过程中,使用了Linux的两个版本,CentOS和Ubuntu,需要在两个版本中都可以开机启动服务。但Ubuntu没有 /etc/rc.d/init.d这个目录,所以,为了保持同一种服务在CentOS和Ubuntu使用的统一性,将服务脚本(注:服务脚本在两个不同版本中是不同的)都放在 /etc/init.d 目录下,最终达到的效果是相同的。

  需要说明的是:在CentOS和Ubuntu两个版本中,除了服务脚本放置的目录是相同的,服务脚本的编写及服务配置都是不同的。比如CentOS使用Chkconfig进行配置,而Ubuntu使用sysv-rc-conf进行配置。

问题5:为什么创建rc0.d软连接

          linux启动时,会根据/etc/inittab中的id:5:initdefault配置项确定的操作系统运行级别N(可能是0-6的某个数字),启动rcN.d对应级别的软连接目录,此目录存放了此级别需要启动的程序。然后根据程序名称使用stop或start参数调用对应的init.d文件里面的程序。规则是:凡是以Kxx开头的 ,代表kill,即杀死进程,都以stop为参数来调用;凡是以Sxx开头的,代表开始进程,都以start为参数来调用。调用的顺序按xx从小到大来执行。

问题6:为什么我的initab没有initdefault id配置

        现在的linux已经不使用/etc/inittab这个文件了。已经用systemd机制替代了。

        systemd 是 linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度。systemd 和 ubuntu 的 upstart 是竞争对手,但是时至今日 ubuntu 也采用了 systemd,所以 systemd 在竞争中胜出,大有一统天下的趋势。目前主流的系统中,systemd 的守护进程主要分为系统态(system)与用户态(user),可以在 ps -ef 中看到 systemd 的守护进程;通过pstree可以看到systemd为祖先父进程。

         提到systemctl就一定需要知道systemd,因为Linux 服务管理有两种方式service和systemctl。而systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动,systemd对应的进程管理命令就是systemctl。值得一提的是,systemctl命令兼容了service哦。
 

Linux-Systemd_linux systemd_开着拖拉机回家的博客-CSDN博客

问题7:init.d和rc.d等文件夹的作用?

“/etc/rc.d/init.d/目录下的脚本就类似与windows中的注册表,在系统启动的时候某些指定脚本将被执行。“首先通过这句话,让大家多着写文件夹有一个直观的认识。

rc.d的内容如下: init.d/ :各种服务器和程序的二进制文件存放目录。这个目录存放的是一些脚本,一般是linux以rpm包安装时设定的一些服务的启动脚本。系统在安装时装了好多rpm包,这里面就有很多对应的脚本。执行这些脚本可以用来启动,停止,重启这些服务。 rc*.d/: 各个启动级别的执行程序连接目录。里头的东西都是指向init.d/的一些软连接。如下图:

问题8:linux开机启动顺序和三个脚本:rc.sysinit, rc, rc.local

这些脚本都是在程序启动的时候运行的,具体启动时, redhat的启动方式和执行次序是:

1.加载内核

2.执行init程序

3./etc/rc.d/rc.sysinit # 由init执行的第一个脚本

4./etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式

5./etc/rc.d/rc.local

6./sbin/mingetty # 等待用户登录

上述第3步主要完成的工作有: 1.调入keymap以及系统字体 2.启动swapping 3.设置主机名 4.设置NIS域名 5.检查(fsck)并mount文件系统 6.打开quota 7.装载声卡模块 8.设置系统时钟等等。

上述第4步/etc/rc.d/rc则根据其参数指定的运行模式 (运行级别,下一个问题会讲到)来执行相应目录下的脚本。

凡是以Kxx开头的 ,代表kill,即杀死进程,都以stop为参数来调用;凡是以Sxx开头的,代表开始进程,都以start为参数来调用。调用的顺序按xx从小到大来执行。

例如,假设缺省的运行模式是3,/etc/rc.d/rc就会按上述方式调用 /etc/rc.d/rc3.d/下的脚本,值得一提的是,Redhat中的运行模式2、3、5都把/etc/rc.d/rc.local做为初始化脚本中的最后一个,该脚本是在系统初始化级别脚本运行之后再执行的,因此可以安全地在里面添加你想在系统启动之后执行的脚本。常见的情况是你可以再里面添加nfs挂载/mount脚本。此外,你也可以在里面添加一些调试用的脚本命令。所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登录之前执行的命令。

问题9:什么是运行级别?

Init进程是系统启动之后的第一个用户进程,所以它的pid(进程编号)始终为1。init进程上来首先做的事是去读取/etc/目录下inittab文件中id:5:initdefault值,这个值称为运行级别(run-level)。它决定了系统启动之后运行于什么级别。运行级别决定了系统启动的绝大部分行为和目的。这个级别从0到6 ,具有不同的功能。不同的运行级定义如下:   

0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)

 1 - 单用户模式   

2 - 多用户,没有 NFS   

 3 - 完全多用户模式(标准的运行级)   

4 – 系统保留的   

 5 - X11 (x window)   

 6 - 重新启动 (千万不要把initdefault 设置为6,否则将一直在重启 )

问题10:Ubuntu删除了init.d目录怎么办

如果Centos删除了init.d,那么问题不大,再建立rc.d/initd 文件夹的软连接即可。

但是如果Ubuntu删除了init.d可怎么办?除非找到一台运行服务和此Ubuntu一样的Ubuntu的服务器,否则没办法100%恢复。 复制另一台同操作系统的init.d文件夹过来,可以解决服务器无法开机的问题。Ubuntu里面的init.d是开机需要运行的程序。

相关文章:

Linux之init.d、rc.d文件夹说明

备注:Ubuntu没有rc.d文件夹,原因看问题四 Linux的几个重要文件 rc.d,init.d文件夹的说明 今天在研究mysql的安装的时候,最后一步要创建一个软连接,使得mysql服务可以自启动,代码如下: ln -s…...

数据结构与算法(六):图结构

图是一种比线性表和树更复杂的数据结构,在图中,结点之间的关系是任意的,任意两个数据元素之间都可能相关。图是一种多对多的数据结构。 一、基本概念 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成&#x…...

Kubernetes07:Service

Kubernetes07:Service 1、service存在的意义 因为Pod的IP是不断变化的,所以需要注册service防止pod失联 1)为了防止Pod失联(服务发现) 2、定义一组Pod访问策略(负载均衡) 2、Pod和Service的关系-------通…...

Qt音视频开发18-不同视频打开无缝切换

一、前言 在轮询视频的时候,通常都是需要将之前的视频全部关闭,然后打开下一组视频,在这个切换的过程中,如果是按照常规的做法,比如先关闭再打开新的视频,肯定会出现空白黑屏之类的过度空白区间&#xff0…...

智能驾驶词典 --- 自动驾驶芯片梳理

0 前言 与智能驾驶相关的芯片主要分为自动驾驶芯片(边缘端)和智能座舱芯片两大类,另外衍生的相关芯片种类还有计算集群芯片(云端), 1 自动驾驶芯片梳理 目前业内具有代表性的智驾芯片产品梳理如下。 1…...

在NVIDIA NX 配置OpenCV多版本冲突和解决的总结

Nvidia Jetson NX 环境 直接刷JetPack5.1的镜像,会得到如下环境 Ubuntu20.04cuda11.4TensorRT8.4cudnn8.4opencv4.5.4 而且这些源一般是从nv-xxxx等源下载的,打开软件Software&Update可以更该是否从这些源安装deb包。同时意味着,我们…...

记录pytorch安装 windows10 64位--(可选)安装paddleseg

安装完paddlepaddle之后,就可以安装paddleseg了。一、安装Git可以参考这个网址:https://blog.csdn.net/u010348546/article/details/124280236windows下安装git和gitbash安装教程二、安装paddleseghttps://github.com/PaddlePaddle/PaddleSeg记得翻墙啊这…...

UWB到底是什么技术?

什么是空间感知能力 所谓的空间感知能力,就是感知方位的能力。更直接一点,就是定位能力。说白了,利用UWB技术,手机和智能设备可以更精准地实现室内定位,不仅可以感知自己的位置,还可以感知周边其它手机或设…...

NCRE计算机等级考试Python真题(八)

第八套试题1、数据库设计中反映用户对数据要求的模式是___________。A.概念模式B.内模式C.设计模式D.外模式正确答案: D2、一个工作人员可使用多台计算机,而一台计算机被多个人使用,则实体工作人员与实体计算机之间的联系是___________。A.多…...

STM32之中断和事件

中断和事件什么是中断当CPU正在执行程序时,由于发生了某种事件,要求CPU暂时中断当前的程序执行,转而去处理这个随机事件,处理完以后,再回到原来被中断的地方,继续原来的程序执行,这样的过程称为…...

MySQL索引类型(type)分析

type索引类型 system > const > eq_ref > ref > range > index > all 优化级别从左往右递减,没有索引的⼀般为’all’。推荐优化目标:至少要达到 range 级别, 要求是 ref 级别, 如果可以是 const 最好&#xff…...

Linux | 2. 用户管理

如有错误,恳请指出。 1. 设置文件权限 权限设置如下: root表示文件所有者,stud1表示文件所属组。其他用户无法访问。更改指令是chown。 更改目录文件所属组:chown .lab lossfound/更改目录文件所有者:chown lab loss…...

【MySQL之SQL语法篇】系统学习MySQL,从应用SQL语法到底层知识讲解,这将是你见过最完成的知识体系

文章目录一、数据管理技术的三个阶段二、SQL语句学习1. DCL数据控制语言1.1 创建用户1.2 修改用户名1.3 修改密码1.4 删除用户1.5 授权1.6 查看权限1.7 回收权限2. DDL数据定义语言2.1 操作数据库2.2 操作数据表2.3 操作数据3. DQL数据查询语言基本语法3.1 单表查询3.1.1选择表…...

CentOS8基础篇7:Linux系统启动配置

一、Linux系统的启动过程 Linux的启动过程大体分为五个阶段: 1.计算机主机加电后,CPU初始化自身,接着在硬件固定位置执行一条指令。这条指令跳转到BIOS,BIOS找到启动设备并获取MBR,该MBR指向LILO或GRUB。 …...

vue中的$forceUpdate()、$set()

$forceUpdate() 迫使vue实例重新(rander)渲染虚拟dom,注意并不是重新加载组件。 结合vue的生命周期,调用 $forceupdate 后只会触发beforeupdate和updated这两个钩子函数,不会触发其他的钩子函数。它仅仅影响实例本身和…...

记住这3点,有效提高江苏专转本上岸率

记住这3点,有效提高上岸率 我们都知道,在江苏统招专转本考试中想岸并不是一件容易的事情。考生能否顺利上岸,往往受多方面因素影响,这其中包括:个人基础、学习方式、信息搜索能力。 如何提高自己的专转本上岸几率&…...

【经验总结】10年的嵌入式开发老手,到底是如何快速学习和使用RT-Thread的?(文末赠书5本)

【经验总结】一位近10年的嵌入式开发老手,到底是如何快速学习和使用RT-Thread的? RT-Thread绝对可以称得上国内优秀且排名靠前的操作系统,在嵌入式IoT领域一直享有盛名。近些年,物联网产业的大热,更是直接将RT-Thread这…...

人大金仓和达梦的空间数据能力对比

一、总得来说: 人大金仓底层更解决于pg数据库, 人大金仓的空间能力基于postgis能力来实现,能力挺强大的. 细节上人大金仓的架构上也对空间的支持框架做的比达梦更加完善。例如数据库的集群能力,并行计算能力,空间数据…...

探析集团企业 1+N 模式,重新定义集团型CRM

目录 一、客户经营、运营监控 二、流程驱动、业务成长 三、规则规范 业务治理 什么是集团型CRM【1N】?本文中我们可以把集团看作为“1”,其他分公司或组织看作为“N”。本篇我们主要分析集团CRM业务定位。 我们从企业集团总部的职能定位确定集团CRM…...

卡特兰数

文章目录1、简介1.1 何为卡特兰数1.2 卡特兰数的通项公式2、应用2.1 题目1:括号合法题目描述思路分析2.2 题目2:进出栈的方式2.2.1 题目描述2.2.2 思路分析2.3 题目3:合法的序列2.3.1 题目描述2.3.2 思路分析2.3.3 代码实现2.4 题目4&#xf…...

OpenLayers 可视化之热力图

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

三体问题详解

从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...