开机启动脚本:linux 开机自动启动脚本思路方法


 通过现场对这次天津iptv demo项目调测、对iptv这套系统有了更好认识和理解、由于iptv本身需要安装许多服务、而现场实施中有没有把这些需要启动服务脚本加入到开机自动运行中、如果服务器重启的后需要手工开启许多服务、工作及以后维护相对比较繁琐、特地整理总结了下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如果运行失败系统启动也会失败
   2、运行级别
  那么到底什么是运行级呢?
  简单运行级就是操作系统当前正在运行功能级别这个级别从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 或者 WindowsLinux 可以有多种运行级常见就是多用户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 有 5项功能:添加服务删除服务列表服务改变启动信息以及检查特定服务启动状态
    
     chkconfig 没有参数运行时显示使用方法如果加上服务名那么就检查这个服务是否在当前运行级启动如果是返回 true否则返回      false --level 选项可以指定要查看运行级而不定是当前运行级
    
     如果在服务名后面指定了onoff 或者 re那么 chkconfig 会改变指定服务启动信息on 和 off 分别指服务在改变运行级时      启动和停止re化服务信息无论有问题化脚本指定了什么
    
     对于 on 和 off 开关系统默认只对运行级 34 5有效但是 re 可以对所有运行级有效指定 --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 缺省启动运行级以及启动和停止优先级如果某服务缺省不在任何运行级启动那么使用 - 代替运行级
     第 2行对服务进行描述可以用 跨行注释
    
     例如random.init 包含 3行:
     # 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 服务(通过下载 2进制文件经济编译安装、而非rpm包)、apache 服务启动命令:            /server/apache/bin/apachectl start    让apache服务运行在运行级别3下面  命令如下:
  
   1)touch /etc/rc.d/init.d/apache
      vi /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内容:
      #!/bin/bash
      #Start httpd service
      /server/apache/bin/apachectl start
     
      至此 apache服务就可以在运行级别3下 随机自动启动了(可以结合chkconfig 对启动服务进行相应调整)


Tags:  linux开机启动服务 linux启动脚本 linux开机启动 开机启动脚本

延伸阅读

最新评论

发表评论