关于Ubuntu运行级别、开机启动脚本的说明

目录简介

1.1介绍Ubuntu下面的自启动脚本目录

1.2 Linux操作系统运行级别的概念

1.3关于操作系统自启脚本的启动顺序

1.4    Linux操作系统运行级别的概念

1.5 自启和关闭自启服务

1.6 对于init [number]命令

Content:

1.1 介绍Ubuntu操作系统关于自启动脚本的几个目录

其中rc0.d~rc.6.d文件夹下分别对应的是操作系统0-6级运行的状态下需要执行的脚本。此外还有rcS.d文件夹和rc.local文件,而在这些文件夹下的文件,都是软链文件,指向指定位置的脚本,有图为证:

       经查看,发现这些软链都是指向同一个文件夹../init.d/的脚本文件,

我们查看其它的文件夹,发现情况都是这样子。因此所有开机自启动的脚本文件都是放在/etc/init.d/目录下面的:

 

那么这些rcN.d分别代表什么意义?或者是说是不是按照0~6的顺序依次运行?肯定不是。因为我们查看rc0.d folder

发现,在该文件夹下,居然有halt(关机)脚本,因此开启操作系统的时候,肯定不可能执行这个。因此证明rcN.d这几个folders之间是相互独立的,没有什么本质的联系。

       那么为什么会有这几个文件夹的区别呢?这就引入了linux操作系统的运行级别(run-level)概念。

1.2 Linux操作系统运行级别的概念

       根据前面学习的内容,我们知道有rc0~6在加 rcS.d & rc.local,后面这两个我们先不看,至少存在0-6共七种运行级别。这里的运行级别的概念被称为System V的运行机制。这七种运行级别的含义如下(仅仅针对Ubuntu,其他系统定义可能不完全一样):

我们可以通过runlevel查看当前系统的运行状态

 

 

也就是说我们系统的运行级别目前是2,该参数的配置文件/etc/init/rc-sysinit.conf

 

因此我们开机自启动的脚本在rc2.d文件夹下,所有的软链指向/etc/init.d/中的脚本文件:

 

这些就是我们默认开机状态下,要启动的服务,如果我们将自己的脚本放在/etc/init.d/目录下,同时在rcN.d中创建软链,指向该文件(软链的名称应该是S<num><service name>,便可以开机自启这些服务。同时我们还可以修改配置文件/etc/init/rc-sysinit.conf中的DEFAULT_RUNLEVEL的值,修改操作系统默认的运行级别。

1.3 关于操作系统自启脚本的启动顺序

       假设我们的操作系统运行级别是2,那么在/etc/rc2.d/文件夹下的脚本执行顺序是怎样的?因为有些服务需要先启动,有些服务需要后启动,他们之间存在先后关系,即有向图的关系。

       我们查看该文件夹下的软链名称(见上图),软链的名称有一定的规则:

       S[number][service name] --> ../init.d/servicename

       S 表示 Start,开启服务

       [number]表示的是该脚本的运行优先级,number越小,脚本的运行优先级就越高

       [service name]表示的是服务的名称。

       因此我们如果需要定义一个服务启动的优先级(顺序),则需指定脚本的number即可。

      

       根据此规则,我们查看rc6.c文件夹(重启运行级别):

按照number的顺序,显示Kill服务,之后再Start一些服务,最后重新启动S90reboot.

1.4 关于rcS.d rc.local文件夹的意义

该脚本是在rc0~6.d文件夹下的脚本执行之前执行rcS.d文件夹下的脚本命令。

1.5 自启和关闭自启服务

       在理解了自启服务的原理之后,我们可以手动添加脚本链接文件到指定的rcN.d目录下,但是这种纯手工的方式比较复杂,因此我们可以使用简单的命令来实现这种功能,或者是指定的工具来实现。

       命令版本# update-rc.d来自动实现System V 的RunLevel的启动脚本服务,前提是这些服务的启动脚本位于/etc/init.d/目录下。

       update-rc.d <service name> start|stop| <order number> <run levels>

       eg:

              sudo update-rc.d rinetd start 20 2

              sudo update-rc.d rinetd stop 20 0

 

       update-rc.d <service name> enable|disable  <runlevels> # 开启或者是禁止

       eg:

              sudo update-rc.d rinetd disable 2 在runlevel2中暂时禁止该服务

 

       update-rc.d <service name> default [NN | SS KK]

       eg:

              sudo update-rc.d rinetd default 80 80  # default 表示在2 3 4 5 中添加80(the first 80)顺序的Start,在0 6 中添加80(the second 80)顺序的Kill服务

      

       注意实现去对应的文件夹查看该服务的ordernumber

       从启动里面删除

       sudo update-rc.d -f <service name> remove

       这样在所有的运行级别中就会删除掉关于该service的自启和关闭服务链接(删除的仅仅是链接,而不是/etc/init.d/文件夹中的脚本文件)

1.6 对于init [number]命令

  我们在命令行中关闭操作系统或者是重新启动,使用的是

 

 

 

       在本质上调用的是:

       

      

 

      

       rc0.d 表示的关机 rc6.d表示的是重新启动

       因此我们还可以在不重新启动操作系统的前提下,切换操作系统的RunLevel

       sudo init <num>

Ubuntu开机启动脚本是一种在系统启动时自动运行脚本文件。它可以用来执行一系列的命令、服务或者程序,以满足用户对系统启动时的需求。 Ubuntu开机启动脚本存放在/etc/init.d目录下,每一个脚本文件都是一个可执行文件,并使用特定的命名规则。脚本文件的命名规则一般是以字母K或S开头,后面跟一个两位数字和一个脚本名。其中,以K开头的脚本文件表示在系统关闭时执行,而以S开头的脚本文件表示在系统启动时执行。 为了系统能够正确地执行脚本文件,还需要在/etc/rcX.d目录下创建符号链接(在这里X代表运行级别)。在该目录下的每个运行级别目录中,会有一系列以K或S开头的符号链接,指向/etc/init.d目录下的脚本文件。这样,当系统启动或关闭时,根据符号链接的命名规则,自动执行对应的脚本文件。 对于用户而言,如果希望在系统启动时自动运行某些命令、服务或者程序,可以通过创建一个新的开机启动脚本来实现。首先,在/etc/init.d目录下创建一个脚本文件,并设置其可执行权限。然后,在/etc/rcX.d目录下创建与脚本文件相关的符号链接,指向该脚本文件。最后,重新启动系统即可看到效果。 总结来说,Ubuntu开机启动脚本是一种方便用户在系统启动时自动运行命令、服务或者程序的机制。通过设置合适的脚本文件和符号链接,用户可以轻松地实现在系统启动时自动执行特定的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值