关于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>

GuangZhou 2016-8-6

关于Ubuntu运行级别、开机启动脚本的说明的更多相关文章

  1. [转]Ubuntu下添加开机启动脚本

    作者: 王恒 发表于 2012年 11月 5日 1.方法一,编辑rc.loacl脚本 Ubuntu开机之后会执行/etc/rc.local文件中的脚本, 所以我们可以直接在/etc/rc.local中 ...

  2. ubuntu 设置Path 开机启动脚本

    vim /etc/rc.local export PATH=$PATH:/work/apps/node-v0.12.7-linux-x64/bin:/work/apps/ledisdb/binexpo ...

  3. Ubuntu 16.04设置开机启动脚本的方法

    需求:公司卡片机容量太小,只有100G,由于使用的人比较的多,开机使用后有时候就会出现磁盘空间占满数据写不进去的情况,影响工作进度,而且每次使用完都得关掉卡片机,所以就有必要写个清理磁盘的脚本,当卡片 ...

  4. Ubuntu 14.04设置开机启动脚本的方法

    rc.local脚本 rc.local脚本是一个ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令.该脚本位于/etc/路径下,需要root权限才能修改. 该脚本具体格式如下: #! ...

  5. ubuntu设置开机启动脚本

    rc.local脚本 rc.local脚本是一个ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令.该脚本位于/etc/路径下,需要root权限才能修改. 该脚本具体格式如下: #! ...

  6. ubuntu系统自动配置开机启动脚本

    以前一直搞的centos配置开机启动脚本,但是相同方法用在ubuntu系统上就不管用了,非常伤脑筋. 非常感谢  https://www.linuxidc.com/Linux/2017-09/1471 ...

  7. Ubuntu编写开机启动脚本

    1 概述 服务器一般不可能百分之百不会挂,于是一般采用主备或者分布式来达到高可用. 挂掉的机器有很多处理策略,常用的就是重新启动,但是为了保证重启之后服务器能够恢复可用状态,需要配置开机启动脚本. 2 ...

  8. Ubuntu 18.04 设置开机启动脚本 rc.local systemd

    ubuntu18.04不再使用initd管理系统,改用systemd. ubuntu-18.04不能像ubuntu14一样通过编辑rc.local来设置开机启动脚本,通过下列简单设置后,可以使rc.l ...

  9. ubuntu高版本如何设置开机启动脚本

    ubuntu-18.04不能像ubuntu14一样通过编辑rc.local来设置开机启动脚本 可以通过下列简单设置后,可以使rc.local重新发挥作用. 1.建立rc-local.service文件 ...

随机推荐

  1. Ubuntu 中 不显示WIFI解决方法

    先用有线接到网络,打开终端,执行以下命令sudo apt-get update sudo apt-get install --reinstall bcmwl-kernel-source 执行成功即可看 ...

  2. #知识#室内设计原理ing

    室内设计原理 第一章 室内设计的含义和基本观点 人的一生,绝大部分时间是在室内度过的,因此,人们设计创造的室内环境,必然会直接关系到室内生活.生产活动的质量,关系到人们的安全.健康.效率.舒适等等.室 ...

  3. 『TCP/IP详解——卷一:协议』读书笔记——15

    2013-08-25 13:39:40 第6章 ICMP:Internet控制报文协议 6.1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错报文以及其他需要注意的信息.ICMP报文同通常 ...

  4. 圆角卖萌式登录表单和width的百分比值

    1.圆角恶意卖萌登录表单 小组要做一个网站,大学生社区那种,然后要做登陆界面然后还要做好看的登录界面,然后在书上看到了一个很漂亮的登陆界面,说来和一般的登陆界面没什么不同只是登录表单的边角被柔化了,变 ...

  5. tableindex

    在写代码的时候,失焦的第一反应便是ng-blur,没想到在一个标签上其作用了,多加了几个标签没反应,于是发现了tableindex,写的代码列子如下,希望可以帮助你: <img src='{{a ...

  6. JavaScript 基础第四天

    一.前言 昨天我们了解了Js的很重要的一个概念叫做函数,函数就是对于冗余和垃圾代码的一种封装机制.简单的讲就是为了能让程序更好更快的执行我们将一些重复性的代码提取,封装成一个有名字的小盒子,等到我们需 ...

  7. Linux环境下Oracle数据库启动停止命令

    切换root至oracle数据库账号 su – oracle 查看数据库服务状态: ps -ef |grep oracle netstat –an|grep 1521 查看数据库监听状态: [orac ...

  8. Hadoop伪分布搭建

    一.伪分布式的搭建 1.准备Linux环境 1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改 ...

  9. [转]Python 中的 lambda,filter,map,reduce,apply

    1. lambda 1. 基本形式: 函数名=lambda args1,args2,...,argsn:expression与C语言中的宏定义类似 2. Code isodd = lambda x: ...

  10. android precelable和Serialization序列化数据传输

    一 序列化原因: 1.永久性保存对象,保存对象的字节序列到本地文件中:2.通过序列化对象在网络中传递对象:3.通过序列化在进程间传递对象. 二 至于选取哪种可参考下面的原则: 1.在使用内存的时候,P ...