• centos6服务启动脚本及开机启动过程


    centos6服务启动脚本

    centos6的服务启动脚本都放在/etc/rc.d/init.d/下,/etc/init.d/是/etc/rc.d/init.d/的软链接;
    
    centos6的服务启动脚本都有两行描述:
    # chkconfig:定义默认在哪个级别下启动(runlevels)、启动优先次序(SS)、关闭的优先次序(KK);当chkconfig命令来为此脚本在rc#.d目录下创建链接     
                 时,runlevels表示默认创建为S开头的链接,-表示,没有级别默认为S开头的链接,除此之外的级别都默认创建为K开头的链接;S后面的启动优先级  
                 为SS所表示的数字;K后面的关闭优先次 序为KK所表示的数字;S开头的软链接表示为on,K开头的表示为off状态的;
    # description:用于说明此脚本的简单功能;,表示为续行;
    虽然这两行是注释,但是chkconfig命令会读取这两行;
    守护进程:可以管理在哪个级别下启动或者关闭的服务;
    /etc/rc.d/rc.local:系统开机最后启动的一个服务,准确说,应该执行的一个脚本;可以把开机想执行的一些命令(创建或者删除等操作)放到此脚本中;
    

    自创建服务脚本

    #!/bin/bash
    
    # chkconfig: 2345 77 22         #优先启动次序数值越大,则越先关闭;反之,先启动(数值小),则后关闭;服务之间有依赖关系,有的服务需要先启动
    # description: Test Service
    LOCKFILE=/var/lock/subsys/myservice   #服务脚本启动后,都会在锁目录下创建一个服务对应的文件
    function STATUS {
           if [ -e $LOCKFILE ];then
                   echo "Running..."
           else
                   echo "Stopping..."
           fi
    }
    function usage {
           echo "`basename $0` (start|stop|restart|status)"
    }
    case $1 in
    start)
           echo "starting..."
           touch $LOCKFILE
           ;;
    stop)
           echo "stopping..."
           rm -f $LOCKFILE &>/dev/null
           ;;
    restart)
           echo "restarting..."
           rm -f $LOCKFILE &>/dev/null
           touch $LOCKFILE
           ;;
    status)
           STATUS
           ;;
    *)
           usage
           ;;
    esac
    

    chkconfig命令

    [root@centos6 ~]# chkconfig --list     #查看所有独立守护服务(守护进程)的启动设定
    [root@centos6 ~]# chkconfig --list SERVICE_NAME     #查看某一个独立守护服务(守护进程)的启动设定
    [root@centos6 ~]# chkconfig --add SERVICE_NAME      #把某个服务脚本添加到chkconfig可控制的服务列表中(创建S开头的软链接)
    [root@centos6 ~]# chkconfig --del SERVICE_NAME      #删除服务的链接文件
    [root@centos6 ~]# chkconfig [--level RUNLEVELS] SERVICE_NAME (on|off)   #指定服务在哪个级别下开启或者关闭
    #如果省略级别指令,默认为2345级别;
    

    /etc/inittab的任务:

    1、设定默认运行级别:
    2、运行系统初始化脚本;
    3、运行指定运行级别对应的目录下的脚本(S开头的都为start,K开头的都为stop);
    4、设定Ctrl+Alt+Del组合键的操作;
    5、定义UPS电源在电源故障/恢复时执行的动作;
    6、启动虚拟终端(2345级别下启动);
    7、启动图形终端(只在5级别下启动);
    

    守护进程类型

    独立守护进程
    瞬时守护进程:不需要关联至运行级别(没有运行级别概念);
    xinetd:超级守护进程;负责管理所有的瞬时守护进程;超级守护进程需要关联至运行级别;
    
    xinetd与瞬时守护进程的关系:
    瞬时守护进程平时是不需要打开的,只需要开启超级守护进程即可,由超级守护进程(xinetd)进行统一管理;当有用户访问瞬时守护进程时,xinetd会激活用户所访问的瞬时守护进程,用户访问完毕后,再关闭瞬时守护进程;
    [root@centos6 ~]# chkconfig PROCESS_NAME on    #启动瞬时守护进程;前提是先得安装xinetd;yum install xinetd -y
    

    系统启动流程

    1、POST加电自检;计算机启动时,系统会载入一段程序,将程序映射到CPU能够寻址的地址空间去,让CPU能够执行其中的指令,这些指令用来系统检测用;
    2、检测完成后,如果基本、核心硬件如果没问题则进入下一步;
    3、根据BIOS中所设定的系统启动流程去找对应存储设备上的MBR;如果MBR存在,会读取MBR中的bootloader(一段程序;MBR留给bootloader用的空间为446byte);
    4、BootLoader中配置了所要引导的系统内核的位置;因此当BIOS加载到内存中后,将控制权限转交给bootloader后,bootloader接收了整个系统的控制权限;
    5、根据用户的选择,读取相应操作系统的内核;
    6、将内核加载到内存中的合适位置进行解压缩并完成内核初始化后,bootloader会将权限转交给内核;
        内核初始化:
           硬件探测
           装载驱动:驱动程序可能在内核中,也可能在另一个辅助程序中:initramfs,initramfs中有内核所依赖到的其他设备的驱动及根文件系统驱动
           挂载根文件系统
           启动用户空间中的第一个进程init
           注意:
           内核要完成初始化依赖于驱动程序,如果驱动程序不在内核当中,需要到某个文件系统下去装载驱动程序;但是在根文件系统被挂载之前,如果内核访问根文 
           件系统需要用到驱动程序,但内核中没有,需要去文件系统中寻找驱动,但是文件系统还未挂载,所以就需要用到initramfs为内核提供访问真正的根文件系 
           统所需的基本驱动程序;initramfs是一个辅助性过渡性的中间层,它能够实现kernel和真正的根文件系统连接起来;内核挂载根文件系统默认是以只读方式
           挂载;          
    7、执行init进程,init在centos6上虽然还叫init,但是本身实际是upstart程序;init(upstart)本身的配置文件:/etc/inittab和/etc/init/*(所有).conf;
    8、/etc/initab所需要执行:设定运行级别、系统初始化脚本(/etc/rc.d/rc.sysinit)、运行指定级别的服务脚本、执行最后一个脚本(/etc/rc.d/rc.local)、启动虚拟终端、图形终端;
         /etc/rc.d/rc.sysinit初始化脚本的作用:
          检测,并且以读写方式重新挂载根文件系统;
          设定主机名;    
          检测并挂载/etc/fstab中的其他文件系统;   
          启用swap分区;
          初始化外围硬件设备的驱动; 
          根据/etc/sysctl.conf设定内核参数;
          激活LVM和RAID设备;       
          清理过期的锁和PID文件;
          激活键映射;(键盘每个键的具体功能)
    BIOS:基本输入输出系统;他保存着计算机最重要的基本输入输出的程序 、开机后自检程序和系统自启动程序;
  • 相关阅读:
    [不错]A step-by-step guide to enabling security, TLS/SSL, and PKI authentication in Elasticsearch
    asp.net core 从单机到集群
    Redlock:Redis分布式锁最牛逼的实现
    es为什么要取消type? 或者为什么一个index下多个type会有问题
    reorder-list——链表、快慢指针、逆转链表、链表合并
    c 链表之 快慢指针 查找循环节点(转)
    binary-tree-preorder-traversal——前序遍历
    binary-tree-postorder-traversal——二叉树后续遍历
    insertion-sort-list——链表、插入排序、链表插入
    sort-list——链表、快慢指针找中间、归并排序
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/12012435.html
Copyright © 2020-2023  润新知