`

linux开机启动脚本的顺序和服务

阅读更多

linux开机启动脚本的顺序


如果服务器重启之后需要手工开启许多服务、工作及以后的维护相对比较繁琐、特地总结了下linux下开机自动启动脚本所涉及的知识和方法、如下:
1、相关基础知识点
   1)redhat的启动方式和执行次序是:
      加载内核
      执行init程序
      /etc/rc.d/rc.sysinit # 由init执行的第一个脚本
      /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式
      /etc/rc.d/rc.local     #相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中)
      /sbin/mingetty # 等待用户登录
      
      在Redhat中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作,包括:
      调入keymap以及系统字体
      启动swapping
      设置主机名
      设置NIS域名
      检查(fsck)并mount文件系统
      打开quota
      装载声卡模块
      设置系统时钟
      等等。
      /etc/rc.d/rc则根据其参数指定的运行模式(运行级别,你在inittab文件中可以设置)来执行相应目录下的脚本。凡是以Kxx开头的
      ,都以stop为参数来调用;凡是以Sxx开头的,都以start为参数来调用。调用的顺序按xx
      从小到大来执行。(其中xx是数字、表示的是启动顺序)例如,假设缺省的运行模式是3,/etc/rc.d/rc就会按上述方式调用
      /etc/rc.d/rc3.d/下的脚本。
      值得一提的是,Redhat中的运行模式2、3、5都把/etc/rc.d/rc.local做为初始化脚本中
      的最后一个,所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登录之前执行的命令。
      
      init在等待/etc/rc.d/rc执行完毕之后(因为在/etc/inittab中/etc/rc.d/rc的
      action是wait),将在指定的各个虚拟终端上运行/sbin/mingetty,等待用户的登录。
      至此,LINUX的启动结束。
    2)init运行级别及指令
    一、什么是INIT:
  init是Linux系统操作中不可缺少的程序之一。
  所谓的init进程,它是一个由内核启动的用户级进程。
  内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。
  内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说)是/sbin/init。如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。
  二、运行级别
  那么,到底什么是运行级呢?
  简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同的功能。
  不同的运行级定义如下
  # 0 - 停机(千万不能把initdefault 设置为0 )
  # 1 - 单用户模式                                     # s   init s = init 1
  # 2 - 多用户,没有 NFS
  # 3 - 完全多用户模式(标准的运行级)
  # 4 - 没有用到
  # 5 - X11 多用户图形模式(xwindow)
  # 6 - 重新启动 (千万不要把initdefault 设置为6 )
  这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,最先运行的服务是放在/etc/rc.d 目录下的文件。在大多数的Linux 发行版本中,启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6)
     3):chkconfig 命令(redhat 操作系统下)
     不像DOS 或者 Windows,Linux 可以有多种运行级。常见的就是多用户的2,3,4,5 ,很多人知道 5 是运行 X-Windows 的级别,而 0 就      是关机了。运行级的改变可以通过 init 命令来切换。例如,假设你要维护系统进入单用户状态,那么,可以使用 init 1 来切换。在       Linux 的运行级的切换过程中,系统会自动寻找对应运行级的目录/etc/rc[0-6].d下的K 和 S 开头的文件,按后面的数字顺序,执行这      些脚本。对这些脚本的维护,是很繁琐的一件事情,Linux 提供了chkconfig 命令用来更新和查询不同运行级上的系统服务。
     语法为:
     
     chkconfig --list [name]
     chkconfig --add name
     chkconfig --del name
     chkconfig [--level levels] name
     chkconfig [--level levels] name
     
     chkconfig 有五项功能:添加服务,删除服务,列表服务,改变启动信息以及检查特定服务的启动状态。
     
     chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回 true,否则返回      false。 --level 选项可以指定要查看的运行级而不一定是当前运行级。
     
     如果在服务名后面指定了on,off 或者 reset,那么 chkconfig 会改变指定服务的启动信息。on 和 off 分别指服务在改变运行级时的      启动和停止。reset 指初始化服务信息,无论有问题的初始化脚本指定了什么。
     
     对于 on 和 off 开关,系统默认只对运行级 3,4, 5有效,但是 reset 可以对所有运行级有效。指定 --level 选项时,可以选择特       定的运行级。
     
     需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init 不会重新启动已经启动的服务,也不会再      次去停止已经停止的服务。
     
     选项介绍:
     
     --level levels
     指定运行级,由数字 0 到 7 构成的字符串,如:
     
     --level 35 表示指定运行级3 和5。
     要在运行级别3、4、5中停运 nfs 服务,使用下面的命令:chkconfig --level 345 nfs off
     
     --add name
     这个选项增加一项新的服务,chkconfig 确保每个运行级有一项 启动(S) 或者 杀死(K) 入口。如有缺少,则会从缺省的init 脚本自动      建立。
     
     --del name
     用来删除服务,并把相关符号连接从 /etc/rc[0-6].d 删除。
     
     --list name
     列表,如果指定了name 那么只是显示指定的服务名,否则,列出全部服务在不同运行级的状态。
     
     运行级文件
     
     每个被chkconfig 管理的服务需要在对应的init.d 下的脚本加上两行或者更多行的注释。
     第一行告诉 chkconfig 缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。
     第二行对服务进行描述,可以用 跨行注释。
     
     例如,random.init 包含三行:
     # chkconfig: 2345 20 80
     # description: Saves and restores system entropy pool for
     # higher quality random number generation.
     表明 random 脚本应该在运行级 2, 3, 4, 5 启动,启动优先权为20,停止优先权为 80。
     
     好了,介绍就到这里了,去看看自己目录下的/etc/rc.d/init.d 下的脚本吧。  
     
     设置自启动服务:chkconfig --level 345 nfs on
     
2. 实例介绍:
   1、在linux下安装了apache 服务(通过下载二进制文件经济编译安装、而非rpm包)、apache 服务启动命令:            /server/apache/bin/apachectl start    。让apache服务运行在运行级别3下面。  命令如下:
   
   1)touch /etc/rc.d/init.d/apache
      chown -R root /etc/rc.d/init.d/apache
      chmod 700 /etc/rc.d/init.d/apache
      ln -s /etc/rc.d/init.d/apache /etc/rc.d/rc3.d/S60apache   #S 是start的简写、代表启动、K是kill的简写、代表关闭。60数字        代表启动的顺序。(对于iptv系统而言、许多服务都是建立在数据库启动的前提下才能够正常启动的、可以通过该数字就行调整脚本的       启动顺序))
      
      apache的内容:
      vi /etc/rc.d/init.d/apache
      #!/bin/bash
      #Start httpd service
      /server/apache/bin/apachectl start
      
      至此 apache服务就可以在运行级别3下 随机自动启动了。(可以结合chkconfig 对启动服务进行相应的调整)。
由于相关变量定义不同, 所以以下启动顺序仅供参考
在Redhat Redflag centos fc linux系统里面脚本的启动

先后:
第一步:通过/boot/vm进行启动 vmlinuz
第二步:init /etc/inittab
第三步:启动相应的脚本,并且打开终端
rc.sysinit
rc.d(里面的脚本)
rc.local
第四步:启动login登录界面 login
第五步:在用户登录的时候执行sh脚本的顺序:每次登录的时候都会完全执行的
/etc/profile.d/file
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile


总结:开机启动有两种方式:

说明一下:所有的开机启动脚本应该都放在init.d目录下面,然后通过ln软连接的方式,放到不同的运行级目录下面。
1.将要执行的命令直接写到 /etc/init.d/rc.loacl脚本文件里面
2.通过服务来实现。
服务有两种方式:
1.用chkconfig来配置和管理服务

chkconfig 命令(redhat 操作系统下)
     不像DOS 或者 Windows,Linux 可以有多种运行级。常见的就是多用户的2,3,4,5 ,很多人知道 5 是运行 X-Windows 的级别,而 0 就      是关机了。运行级的改变可以通过 init 命令来切换。例如,假设你要维护系统进入单用户状态,那么,可以使用 init 1 来切换。在       Linux 的运行级的切换过程中,系统会自动寻找对应运行级的目录/etc/rc[0-6].d下的K 和 S 开头的文件,按后面的数字顺序,执行这      些脚本。对这些脚本的维护,是很繁琐的一件事情,Linux 提供了chkconfig 命令用来更新和查询不同运行级上的系统服务。
     语法为:
     
     chkconfig --list [name]
     chkconfig --add name
     chkconfig --del name
     chkconfig [--level levels] name
     chkconfig [--level levels] name
     
     chkconfig 有五项功能:添加服务,删除服务,列表服务,改变启动信息以及检查特定服务的启动状态。
     
     chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回 true,否则返回      false。 --level 选项可以指定要查看的运行级而不一定是当前运行级。
     
     如果在服务名后面指定了on,off 或者 reset,那么 chkconfig 会改变指定服务的启动信息。on 和 off 分别指服务在改变运行级时的      启动和停止。reset 指初始化服务信息,无论有问题的初始化脚本指定了什么。
     
     对于 on 和 off 开关,系统默认只对运行级 3,4, 5有效,但是 reset 可以对所有运行级有效。指定 --level 选项时,可以选择特       定的运行级。
     
     需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init 不会重新启动已经启动的服务,也不会再      次去停止已经停止的服务。
     
     选项介绍:
     
     --level levels
     指定运行级,由数字 0 到 7 构成的字符串,如:
     
     --level 35 表示指定运行级3 和5。
     要在运行级别3、4、5中停运 nfs 服务,使用下面的命令:chkconfig --level 345 nfs off
     
     --add name
     这个选项增加一项新的服务,chkconfig 确保每个运行级有一项 启动(S) 或者 杀死(K) 入口。如有缺少,则会从缺省的init 脚本自动      建立。
     
     --del name
     用来删除服务,并把相关符号连接从 /etc/rc[0-6].d 删除。
     
     --list name
     列表,如果指定了name 那么只是显示指定的服务名,否则,列出全部服务在不同运行级的状态。
     
     运行级文件
     
     每个被chkconfig 管理的服务需要在对应的init.d 下的脚本加上两行或者更多行的注释。
     第一行告诉 chkconfig 缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。
     第二行对服务进行描述,可以用 跨行注释。

     
     例如,random.init 包含三行:
     # chkconfig: 2345 20 80
     # description: Saves and restores system entropy pool for
     # higher quality random number generation.
     表明 random 脚本应该在运行级 2, 3, 4, 5 启动,启动优先权为20,停止优先权为 80。
     
     好了,介绍就到这里了,去看看自己目录下的/etc/rc.d/init.d 下的脚本吧。  

     下面以APache为例子:

     cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
     vi /etc/rc.d/init.d/httpd 添加下面的注释
     #chkconfig:345 85 15
     #description WebServer

     第一行哪些级别需要启动httpd(3,4,5);启动序号(85);关闭序号(15).

     使用chkconfig管理
     chkconfig --add httpd
     chkconfig httpd on

     
     设置自启动服务:chkconfig --level 345 nfs on
2.手工配置服务:
 1、在linux下安装了apache 服务(通过下载二进制文件经济编译安装、而非rpm包)、apache 服务启动命令:            /server/apache/bin/apachectl start    。让apache服务运行在运行级别3下面。  命令如下:
   
   1)touch /etc/rc.d/init.d/apache
      chown -R root /etc/rc.d/init.d/apache
      chmod 700 /etc/rc.d/init.d/apache
      ln -s /etc/rc.d/init.d/apache /etc/rc.d/rc3.d/S60apache    #S 是start的简写、代表启动、K是kill的简写、代表关闭。60数字        代表启动的顺序。(对于iptv系统而言、许多服务都是建立在数据库启动的前提下才能够正常启动的、可以通过该数字就行调整脚本的       启动顺序))
      
      apache的内容:
      vi /etc/rc.d/init.d/apache
      #!/bin/bash
      #Start httpd service
      /server/apache/bin/apachectl start
      
      至此 apache服务就可以在运行级别3下 随机自动启动了。(可以结合chkconfig 对启动服务进行相应的调整)。

分享到:
评论

相关推荐

    qt-creator-opensource-linux-x86_64-13.0.0.run

    qt-creator-opensource-linux-x86_64-13.0.0.run

    2023-04-06-项目笔记 - 第一百零六阶段 - 4.4.2.104全局变量的作用域-104 -2024.04.17

    2023-04-06-项目笔记-第一百零六阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.104全局变量的作用域_104 - 2024-04-17

    1.zip

    1

    一个简单的Fortran脚本示例,它会读取用户输入的两个整数,然后计算它们的和与乘积,最后将结果输出到屏幕上

    Fortran是一种编译型语言,这意味着你需要先使用编译器将源代码编译成可执行文件,然后才能运行它。 在这个示例中,我们使用了Fortran 90/95/2003/2008/2018的语法,因为它是最广泛使用的现代Fortran版本之一。Fortran的不同版本在语法和特性上可能会有所不同,但这个示例应该在大多数现代Fortran编译器中工作。 implicit none语句用于确保所有变量在使用前都必须显式声明,这是一种良好的编程实践,可以避免潜在的错误。 print *和read *分别用于输出和输入操作。星号*表示输出/输入应该使用默认的格式。

    5V继电器控制模块原理图+教程.7z

    5V继电器控制模块原理图+教程.7z

    sklearn中决策树算法进行泰坦尼克号人员幸存预测

    sklearn中决策树算法进行泰坦尼克号人员幸存预测 有包的导入、数据处理、特征提取、预测结果等

    泼墨水彩毕业答辩.pptx.zip

    泼墨水彩毕业答辩.pptx

    基于ASP酒店客房管理系统设计(论文+源代码).zip

    基于ASP酒店客房管理系统设计(论文+源代码)

    无更改的股票海事局分析及

    无更改的股票海事局分析及

    12306抢票脚本源码

    12306抢票软件源码 下载源码运行请注意下面几条: 1.此项目用到了selenium库,浏览器是chrome 2.将driverchrome放到main同级目录下。 3.进入setting.py文件配置一下chrome.exe的路径。注意driverchrome与chrome的版本要一致!!! 4.请确保安装了PyQt5库。 5.run文件是ESTrain.py

    斜轮分拣机sw16可编辑设计图纸.7z

    斜轮分拣机sw16可编辑设计图纸.7z

    google-chrome-stable_current_amd64.deb.zip

    google-chrome-stable_current_amd64.deb.zip

    中国科学技术大学2022年秋《机器学习》(王杰)课程大作业.zip

    机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

    清新彩色条纹毕业答辩模板.pptx.zip

    清新彩色条纹毕业答辩模板.pptx

    使用FastICA算法,进行盲源分离,得出源信号 .zip

    使用FastICA算法,进行盲源分离,得出源信号。.zip

    ethtool离线包,仅在pve-7.1-7测试成功

    ethtool离线包,仅在pve-7.1-7测试成功

    ASP.NET基于WEB的工作计划统计分析系统的设计与实现(源代码+论文).rar

    计算机毕业设计,含源码

    matlab相移三步法、四步法、五步法及相应的相位解包裹

    matlab相移三步法、四步法、五步法及相应的相位解包裹

    纸张风格背景【论文答辩PPT模板】.pptx.zip

    纸张风格背景【论文答辩PPT模板】.pptx

    煤油冷却器的设计【毕业设计-论文-装配图-CAD图】

    本设计为固定管板式换热器,主要有外壳、管板、封头等部件组成。其特点是造价低,无内漏旁路渗流较小,处理能力大,选用的材料范围广。本设计采用单壳程,双管程。管程工作压力为1.6MPa,工作温度30℃,介质为水。壳程工作压力2MPa,工作温度138℃,介质为煤油。 换热器作为流体间传热设备,在工业生产中有很高的比重。所以,在换热器的开发与研究上,不仅需要满足各种工艺条件,而且对综合应用能力也有很高得要求。设计时应该加大效率,减少成本,使经济效益也优先考虑。着重探究结构参数,换热性能等方面带来的影响。从查阅资料文献,确定参数和工艺设计计算;然后进行设计及相关图纸的绘制,到最后论文成稿,画出装配图和零件图。 固定管板式换热器的设计包括:管子的规格和排列方式、圆筒、封头、管板的材料选择及厚度设计,拆流板、防冲板的选择等。首先是选择管子,以查看介质来确定是否需要清洗为原则。管子在管板上的排列方式选择为正三角形排列。因为此时管板的强度高、流体短路机会少,还可以排列更多的管子。壳体厚度计算式是由圆筒薄膜应力准则推导出的。其最小壁厚应不小于封头内径的0.15%。管板作为管壳式换热器最重要的部件之一

Global site tag (gtag.js) - Google Analytics