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-不同视频打开无缝切换
一、前言 在轮询视频的时候,通常都是需要将之前的视频全部关闭,然后打开下一组视频,在这个切换的过程中,如果是按照常规的做法,比如先关闭再打开新的视频,肯定会出现空白黑屏之类的过度空白区间࿰…...
智能驾驶词典 --- 自动驾驶芯片梳理
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 最好ÿ…...
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…...
分布式任务处理
分布式任务处理 1. 什么是分布式任务调度 视频上传成功需要对视频的格式进行处理,如何用Java程序对视频进行处理呢?这里有一个关键的需求就是当视频比较多的时候我们如何可以高效处理。 如何去高效处理一批任务呢? 1、多线程 多线程是充…...
Linux 命令复习
常用命令 1、目录操作 cd 切换目录 cd / 切换到根目录 cd ~ 回到个人用户的主目录 ls 查看当前目录下所有文件的详细信息 list的意思 ll 查看当前目录下所有文件的详细信息 pwd 显示当前目录的全路径 . …...
leetcode 困难 —— 天际线问题(优先队列)
(思路感觉挺明显的,就是一些特殊情况得考虑清楚) 题目: 城市的 天际线 是从远处观看该城市中所有建筑物形成的轮廓的外部轮廓。给你所有建筑物的位置和高度,请返回 由这些建筑物形成的 天际线 。 每个建筑物的几何信息…...
离散数学笔记_第一章:逻辑和证明(2 )
1.2 命题逻辑的应用1.2.1 语句翻译 1.2.2 系统规范说明 1.2.3 布尔搜索 1.2.4 逻辑谜题泥巴孩子谜题骑士和流氓(考研逻辑题)1.1.2.5 逻辑电路1.2.1 语句翻译 🐳为啥要翻译语句? ➡因语言常常有二义性(有歧义&#x…...
MFCC语音特征值提取算法
博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的,…...
TencentOS3.1编译安装redis6.2.5
下载地址:https://redis.io/download 最近版为7.0.8,本次安装的是6.2.5 软件包解包并进入目录。 redis是c语言编写的,编译需要gcc,按网上资料说默认安装的gcc版本过低(可能是4.8.5),使用rpm …...
AI顶会accepted papers list
为方便相关paper调研,对相关顶会文章列表和下载地址汇总,会议包括:AAAI、ACL、IJCAI、ICLR、COLING、SIGIR、WSDM、WWW、ICML、KDD、NeurIPS、CVPR、ECCV、ACM MM 2023 Accepted papers list 更新于:(2022.11.24&…...
IOS逆向之frida安装
首先手机要越狱,这个就不说了,博主就是咸鱼搞了个160的苹果6, 自己刷到苹果6支持最新的12.5.7版本后越狱; 谁让他低版本,不支持 CrackerXI砸壳呢,当时你要是使用 frida-ios-dump 也是可以的; …...
《金山区提信心扩需求稳增长促发展行动方案》的通知
金发改规〔2023〕1号 各镇政府、街道办事处、园区管委会,区政府各部门、各直属单位: 《金山区提信心扩需求稳增长促发展行动方案》已经区委、区政府同意,现印发给你们,请认真按照执行。 附件:金山区提信心扩需求稳增…...
【Redis】Java客户端JedisSpringDataRedis入门(三)
🚗Redis学习第三站~ 🚩起始站:【Redis】概述&环境搭建(一) 🚩本文已收录至专栏:数据库学习之旅 👍希望您能有所收获 在上一篇中我们学习了Redis常见命令的使用,显然,我们不可能一…...
亚马逊全球开店官方网站/广州市疫情最新
众所周知,度度熊喜欢的字符只有两个:B 和D。 今天,它发明了一个游戏:D游戏。 度度熊的英文并不是很高明,所以这里的D,没什么高深的含义,只是代指等差数列(等差数列百科)中的公差D。 这个游戏…...
dw网站引导页怎么做/网站是否含有seo收录功能
先说结论:在feign接口调用时使用表单形式(RequestParam)传date类型会发生时间精度错乱,在8时区会多14个小时。使用json格式(RequestBody)传date类型不会发生这种情况。表单形式我的解决办法是:在对外暴露的feign接口中…...
wordpress 的客户端/百度在线咨询
公众号 全网唯一一个从0开始帮助Java开发者转做大数据领域的公众号~ 大数据技术与架构或者搜索import_bigdata关注~ 海量【java和大数据的面试题+视频资料】整理在公众号,关注后可以下载~ JVM内存回收机制简述 JVM内存回收机制涉及的知识点太多了,了解越多越迷糊,汗一个,这…...
旅游网站建设的背景意义/怎样在百度上免费建网站
了解完基本的索引以及文档的增删改查,接下来该实战搞一搞了,老样子,打开该打开的 想要实现搜索,必须先有数据,第一步,通过网络爬虫获取京东的一些书籍数据: 通过下面代码,获取到书…...
影视网站怎么做原创/百度网页
2019独角兽企业重金招聘Python工程师标准>>> 泛形的基本术语,以ArrayList<E>为例:<>念着typeofArrayList<E>中的E称为类型参数变量ArrayList<Integer>中的Integer称为实际类型参数整个称为ArrayList<E>泛型类型…...
溧水城市建设招标网站/灰色广告投放平台
原标题:【广技师考纲】2018年广东技术师范大学美术专插本考题考试大纲(分享)2018年广技师工艺美术(职教师资)考试大纲工艺美术专业《设计素描》考试大纲一、考试的性质与命题的原则《设计素描》是现代设计艺术前沿基础课程,是造型表现能力和创意思维能力…...