zoukankan      html  css  js  c++  java
  • C6 C7的开机启动流程

    C6开机启动流程

    1.内核引导,加电自检(通电后检查内核):检查bios的配置,检测硬件
    装好系统之后才会进行以下内容
    MBR 引导 (3.2.1...)
    GRUB菜单 (选择不同的系统)(按e,进入单用户模式)
    c6改密码很简单,可以直接改
    2.运行init

    • 0:关机(系统加载到init 0 ,会开关机)
    • 1:单用户模式(修改密码或开机死循环)(单用户工作状态,root权限,用于系统维护,禁止远程登陆)(开机按E进入单用户命令行模式之后,vim /etc/inittab 修改左下角重启就好)(开机按e进入单用户命令行模式之后,echo xx |passwd --stdin root 可以修改密码
    • 2:多用户模式(没有文件系统和网络)
    • 3:多用户模式(命令行,默认模式)(纯命令行模式)
    • 4:没有使用的模式(废物模式)
    • 5:多用户模式(图形化界面)
    • 6:重启(默认运行级别不能设为6,否则不能正常启动,死循环)

    c6

    查看当前运行的级别,c6,c7都可以使用runlevel查看运行级别
    [root@oldboy ~]# vim /etc/inittab # 可以看到左下角的运行级别
    [root@zls ~]# runlevel  上一次的运行级别和现在的级别
    N 3
    临时切换运行级别
    [root@zls ~]# init 5   切换,没有图形化界面则不会切换
    [root@zls ~]# runlevel
    3 5
    
    永久修改C6运行级别
    [root@zls ~]# vim /etc/inittab
    id:3:initdefault
    

    c7

    [root@oldboy ~]# vim /etc/inittab
    # inittab is no longer used when using systemd.
     使用systemd时不再使用inittab。
    # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
     在此处添加配置不会对您的系统产生任何影响。
    # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
     Ctrl Alt Delete由/usr/lib/systemd/system/Ctrl-Alt-del.target处理
    # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
     systemd使用“targets”而不是runlevels。默认情况下,有两个主要目标:
    # multi-user.target: analogous to runlevel 3
    multi-user.target:类似于runlevel 3
    # graphical.target: analogous to runlevel 5
     graphical.target:类似于runlevel 5
    # To view current default target, run:
    要查看当前默认目标,请运行:
    # systemctl get-default
    #
    # To set a default target, run:
    要设置默认目标,请运行:
    # systemctl set-default TARGET.target
    
    [root@oldboy ~]# systemctl set-default multi-user.target   # 永久修改运行级别
    
    [root@oldboy ~]# ll /usr/lib/systemd/system/|grep '.target$'
    -rw-r--r--. 1 root root  402 Aug  8  2019 shutdown.target    #关机,如果虚拟机设置了这个级别,那么系统每次开机加载过运行级别之后,就会关机
    -rw-r--r--. 1 root root  486 Aug  8  2019 rescue.target      #单用户模式,在命令行模式无法进入单用户模式,只能在grub或grub2进入单用户模式
    -rw-r--r--. 1 root root  492 Aug  8  2019 multi-user.target  #多用户模式,也是开机默认进入的模式
    -rw-r--r--. 1 root root  558 Aug  8  2019 graphical.target   #图形化模式,在命令行可以切换到图形化模式,前提是安装了图形化模式
    -rw-r--r--. 1 root root  552 Aug  8  2019 poweroff.target    #重启,如果虚拟机设置了这个级别,那么系统每次开机加载过运行级别之后,就会重启
    

    3.系统初始化(启动相关服务)
    在init的配置文件中(/etc/inittab)有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。
    它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

    l5:5:wait:/etc/rc.d/rc 5
    这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受5作为参数,去执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。
    而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。
    /etc/rcn.d 下面以S开头的 (软连接)是开机启动的服务的顺序,以K开头的是停止(开机不启动)的服务

     **c6可以使用以下命令,c7不能使用(不能使用chkconfig --add,可以使用runlevel)**
    ```bash
    chkconfig --list      列出所有的系统服务 
    chkconfig --add httpd 增加httpd服务 # 先添加,后选择级别
    chkconfig --del httpd 删除httpd服务
    chkconfig命令提供了一种简单的方式来设置一个服务的运行级别。例如,为了设置MySQL服务器在运行级别3和4上运行,# 你必须首先将MySQL添加为受chkconfig管理的服务:
    chkconfig --add mysql
    
    现在,我们在级别3和5上设定服务为“on”
    chkconfig --level 35 mysql on   # 纯命令模式和图形化模式
    或
    chkconfig mysql on   # 默认是3 上 on 
    
    在其他级别上设为off
    chkconfig --level 01246 mysql off
    为了确认你的配置被正确的修改了,我们可以列出服务将会运行的运行级别,如下所示:
    
    #chkconfig --list mysql  
    mysql           0:off       1:off       2:off       3:on 4:off       5:on 6:off
    
    [root@oldboy ~]# ll /etc/systemd/system/multi-user.target.wants/  查看开机自启动服务
    [root@oldboy ~]# chkconfig --level 35 nginx on
    lrwxrwxrwx  1 root root 37 Apr 25 08:49 nginx.service -> /usr/lib/systemd/system/nginx.service  系统自动创建了软连接(开机自启动)
    

    c7 添加服务到开机自启动 (这个时候源码nginx要 可以使用systemctl,也就是说运行过那个脚本,如果脚本里面指定有创建/usr/lib/systemd/system/nginx.service脚本并写入了,启动信息就可以!)

    [root@oldboy ~]# systemctl enable nginx  (状态改变,才会输出)
    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
    创建了从/etc/systemd/system/multi-user.target.want/nginx.service到/usr/lib/systemd/system/nginx.service的符号链接。(# 前提的nginx.service存在)
    
    [root@oldboy ~]# reboot 
    [root@oldboy ~]# systemctl status nginx
    ● nginx.service - The nginx HTTP and reverse proxy server  (绿色,开机自启动了)
    
    # 使用软连接让服务加入开机自启动
    [root@oldboy ~]# ll /usr/lib/systemd/system/
    -rw-r--r--  1 root root  635 Apr 24 08:26 nginx.service
    [root@oldboy ~]# ll /etc/systemd/system
    drwxr-xr-x. 2 root root   87 Apr 18 22:09 default.target.wants
    ln -s /usr/lib/systemd/system/nginx.service  /etc/systemd/system/multi-user.target.wants/nginx.service
    
    [root@oldboy ~]# ll /etc/systemd/system/multi-user.target.wants
    total 0
    lrwxrwxrwx. 1 root root 38 Apr 18 22:10 auditd.service -> /usr/lib/systemd/system/auditd.service
    

    4.建立终端(tty)
    tty1~6,是centos系统(init服务)默认创建的6个终端,是内核需要用到的终端,(可以在命令行使用 init N 实现终端之间的切换)
    pts/0 , pts/1 xshell远程连接的终端
    启动mingetty 进程

    5.用户登录
    一般来说,用户的登录方式有三种:
    (1)命令行登录(虚拟机)
    (2)ssh登录
    (3)图形界面登录

    ## 关机命令
    init 0            立马关机
    halt              立马关机
    shutdown -h now   立马关机
    shutdown -h 20:20
    shutdown -h +10
    shutdown -a       取消关机设置
    poweroff          立马关机
    
    ## 重启命令
    init 6
    reboot
    shutdown -r now
    shutdonw -r 20:20
    shutdown -r +10
    

    C7

    1.BIOS(开机自检)
    打开系统电源后,它将读取所有设备设置并执行开机自检(开机自检)过程,以识别硬件设备,以测试和初始化系统硬件组件。成功后处理后,它将加载MBR(主引导记录)以进行下一个引导处理。

    2.MBR ( Master Boot Record 主引导记录)
    主引导记录放在Linux引导硬盘的第一个扇区中,MBR的大小只有512个字节,它包含用于引导操作系统的机器代码指令,称为引导加载程序,以及分区表

    3.GRUB2 Bootloader(引导菜单)
    言简意赅:grub2菜单,如果装了双系统会让你进行选择
    grub2配置文件位于/boot/grub2/grub.cfg中,由grub2 mkconfig使用/etc/grub.d中的模板和/etc/default/grub中的设置自动生成。不建议编辑GRUB2配置文件

    4.Kernel(内核引导)
    Linux内核是操作系统的核心,它是系统上第一个加载的程序。当系统启动时,内核从initrd.img加载所有必要的内核模块和驱动器,以加载Linux7中的系统第一个进程systemd,在6里面,init是爸爸,在7里面换了个爸爸,那就是systemd

     [root@oldboy ~]# top
     1 root      20   0  125324   3852   2608 S  0.0  0.4   0:02.38 systemd 
     
     [root@oldboy ~]# ll /etc/init.d/ 只能用绝对路径的方式启动/etc/init.d/下的2个服务,centos7里面,大多数服务都是用systemctl这个命令管理
    total 40
    -rw-r--r--. 1 root root 18281 Mar 29  2019 functions
    -rwxr-xr-x. 1 root root  4569 Mar 29  2019 netconsole
    -rwxr-xr-x. 1 root root  7923 Mar 29  2019 network
    -rw-r--r--. 1 root root  1160 Aug  8  2019 README
     
    #centos7上使用centos6的命令:
    [root@oldboy ~]# /etc/init.d/network restart
    Restarting network (via systemctl):                        [  OK  ]
    [root@oldboy ~]# service network restart
    Restarting network (via systemctl):                        [  OK  ]
    
    #判断/syy 目录或文件是否存在
    [root@oldboy ~]# vim a.sh     
    #!/bin/bash
    . /etc/init.d/functions
    
    if [ -d /root/syy ];then
            action '该目录已存在' /bin/true
    else
            action '该目录不存在' /bin/false
    fi
    [root@oldboy ~]# sh a.sh 
    该目录已存在                                               [  OK  ]
    

    5.Systemd (不再使用init,改成了systemd)
    systemd使用“targets”而不是runlevels。默认情况下,有两个主要级别:

    1) multi-user(多用户).target: analogous to runlevel 3
    #查看运行级别
    [root@zls ~]# systemctl get-default
    multi-user.target
    2) graphical(图形化).target: analogous to runlevel 5
    #设置默认运行级别
    [root@zls ~]# systemctl set-default graphical.target
    Removed symlink /etc/systemd/system/default.target.
    Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
    
    #查看默认界面
    [root@zls ~]# systemctl get-default
    graphical.target
    
    [root@zls ~]# vim /etc/inittab
    # inittab is no longer used when using systemd.
     使用systemd时不再使用inittab
    # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
     在此处添加配置不会对您的系统产生任何影响
    # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
     Ctrl Alt Delete由/usr/lib/systemd/system/Ctrl-Alt-del.target处理
    # systemd uses 'targets' instead of runlevels. By default, there are two main targets:
     systemd使用“targets”而不是runlevels。默认情况下,有两个主要目标:
    # multi-user.target: analogous to runlevel 3
    multi-user.target:类似于runlevel 3
    # graphical.target: analogous to runlevel 5
    graphical.target:类似于runlevel 5
    # To view current default target, run:
    要查看当前默认目标,请运行
    # systemctl get-default
    #
    # To set a default target, run:
    要设置默认目标,请运行:
    # systemctl set-default TARGET.target
    
    CentOS7中的运行级别:(runlevel:运行级别的意思)
    [root@lb01 ~]# ll /usr/lib/systemd/system/|grep ^l
    runlevel0.target -> poweroff.target    # 关机
    runlevel1.target -> rescue.target      # 单用户模式 (救援模式)
    runlevel2.target -> multi-user.target  # 多 (没有文件系统和网络)
    runlevel3.target -> multi-user.target  # 多 (命令行,默认模式)(纯命令行模式)
    runlevel4.target -> multi-user.target  # 多
    runlevel5.target -> graphical.target   # 图形化模式
    runlevel6.target -> reboot.target      # 重启
    
    运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
    运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
    运行级别2:多用户运行级别(没有文件系统)
    运行级别3:完全的多用户状态(有文件系统),登陆后进入控制台命令行模式
    运行级别4:多用户运行级别
    运行级别5:X11控制台,登陆后进入图形GUI模式
    运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
    

    6.Runlevel-target(运行级别)

    init 0.target -> poweroff.target		# 关机
    init 1.target -> rescue.target			# 单用户模式
    init 2.target -> multi-user.target		# 多用户模式(没有文件系统和网络)
    init 3.target -> multi-user.target		# 多用户模式(命令行模式,默认模式)
    init 4.target -> multi-user.target		# 多用户模式(还是没有被使用)		
    init 5.target -> graphical.target		# 图形化模式
    init 6.target -> reboot.target			# 重启
    
    # 获取当前默认的运行级别
    [root@qls ~]# systemctl get-default
    multi-user.target
    
    # 修改运行级别
    [root@qls ~]# systemctl set-default poweroff  (可以分开成两条命令,自己做软链接)
    
    [root@oldboy ~]# ll /etc/systemd/system/
    lrwxrwxrwx. 1 root root  37 Apr 18 22:12 default.target -> /lib/systemd/system/multi-user.target
    
    [root@oldboy ~]# ll /usr/lib/systemd/system/  
    -rw-r--r--. 1 root root  552 Aug  8  2019 poweroff.target
    -rw-r--r--. 1 root root  486 Aug  8  2019 rescue.target
    -rw-r--r--. 1 root root  492 Aug  8  2019 multi-user.target
    -rw-r--r--. 1 root root  558 Aug  8  2019 graphical.target
    -rw-r--r--. 1 root root  543 Aug  8  2019 reboot.target
    
    #c7看 /etc/systemd/system/default.target 链接关系找 对应的运行级别,/usr/lib/systemd/system/multi-user.target
    #/etc/systemd/system/default.target.wants 目录下的xx.service文件,连接到/usr/lib/systemd/system/xx.service   
    
    c6看 配置文件中(/etc/inittab),调用执行了/etc/rc.d/rc.sysinit,然后选择对应的运行级别
    rcN.d 实现切换系统开机运行服务的级别
    
    ## 使用两条命令修改默认运行级别
    [root@qls ~]# rm -f /etc/systemd/system/default.target
    [root@qls ~]# ln -s /usr/lib/systemd/system/poweroff.target /etc/systemd/system/default.target
    
    ## 相关目录
    [root@qls ~]# ll /etc/systemd/system   (默认的运行级别)
    [root@qls ~]# ll /usr/lib/systemd/system (运行级别和服务启动 脚本)
    

    [root@qls ~]# systemctl set-default poweroff

    CentOS7进入单用户模式

    C7开机,出现grub2菜单的时候,按e进入单用户模式,q退出来,回车进入系统,
    
    linux16这一行UTF-8后面输入enforcing=0 init=/bin/bash  (顺序不重要)
    可以手动修改ro 为 rw ,(这样可以使用systemctl了)
    ctrl + x   真正进入单用户模式
    
    ## 修改默认启动方式
    bash-4.2# mount -o rw,remount /        重新挂载根目录(英文逗号)(改成读写权限)
    bash-4.2# systectl set-default multi-user.target    (不能用systemctl)(只能分开执行)
    bash-4.2# rm -f /etc/systemd/system/default.target
    bash-4.2# ln -s /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
    bash-4.2# exec /sbin/init              重新引导init后可以使用systemctl
    
    ## 修改密码
    bash-4.2# mount -o rw,remount /
    bash-4.2# echo 123|passwd --stdin root
    bash-4.2# exec /sbin/init
    
    进入命令行模式,最好重新修改一次密码(有些情况单用户修改后的密码是一次性使用的)
    

    方法2
    linux16这一行UTF-8后面输入 rd.break (这种方法只能修改启动级别,不能修改密码,无论的交互还是非交换,有的系统可以改)

    switch_root:/# mount -o rw,remount /sysroot  重新挂载/sysroot
    switch_root:/# chroot /sysroot  获取root权限,命令提示符改变
    sh-4.2# systemctl set-default multi-user.target  可以使用systemctl
    sh-4.2# exit            退出
    switch_root:/# reboot   重启
    

    [root@qls ~]# systemctl set-default poweroff

    总结

    # 查看默认运行级别
    systemctl get-default
    runlevel
    
    # 设置默认运行级别
    systemctl set-default multi-user.target  ###
    rm -f /etc/systemd/system/default.target
    ln -s /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target
    
    # 设置开机自启动
    1. systemctl enable nginx  
       systemctl disable nginx   取消服务的开机自启
    2. ln -s /usr/lib/systemd/system/nginx.service /etc/systemd/system/multi-user.target.wants/nginx.service
    #注意,/usr/lib/systemd/system/下得有nginx.service,也就是运行了ngin-rpm -d指定的那个脚本,执行了那个脚本,/usr/lib/systemd/system/就有有nginx.service
    同样,如果服务开机自启,那么,/etc/systemd/system/multi-user.target.wants/下就有nginx.service,
    
    ## 单用户模式
     CentOS7忘记root密码,进入单用户模式
    ```bash
    1.重启系统
    2.在grub菜单界面,按'e'进入单用户模式
    
    **3.方法一:**
    在linux16内容的行末写`enforcing=0 init=/bin/bash`按`Ctrl + x`正式进入单用户模式
    
    4.重新挂载 `/`目录,权限设置为可读可写(rw)
    mount -o rw,remount /
    
    5.修改root密码
    echo 1|passwd --stdin root
    
    6.重新加载systemd
    exec /sbin/init
    reboot
    
    **方法二:**
    ```bash
    在linux16内容的行末写`rd.break`按`Ctrl + x`开机
    重新挂载`sysroot`目录设置可读可写权限(rw)
    mount -o rw,remount /sysroot
    
    #获取root权限
    chroot /sysroot
    
    #设置root密码
    echo 123|passwd --stdin root
    
    #退出sh-4.2
    exit
    
    #重启服务器
    reboot
    

    救援模式

    救援模式的作用
    -不损坏数据的前提下,修复磁盘(/dev/sda),,,密码,运行级别
    -修复grub2菜单(/boot/grub2/grub2.cfg)

    1.打开电源进入BIOS
    2.选择boot界面,将CD-ROM(光驱),放在第一行(,选择,按 + )
    3.按F10保存退出,把CD提到第一位,按f10,这样保存之后,重启系统的话,我们将会从光驱进入系统,这样可以选择是否进入救援模式
    同样的,如果在服务器上插入USB(U盘),bios一般也可以扫描到U盘,所以,我们也可以在这里选择是否从U盘进入系统,修复系统。(前提是U盘上有相应的镜像)
    4.选择yes
    5.进入救援模式
    install centos7 就是安装centos7,安装系统也可以达到修复系统的目的,但是会导致数据清空
    选择install centos 7 按TAB键可以修改默认网卡名(eth),dell(戴尔服务器)net.ifnames=0 biosdevname=0,如果不是戴尔服务器,net.ifnames=0
    选择硬盘启动的话,直接进入系统(常用的那个)
    回车
    救援模式是通过第二行进入的,单用户模式是通过--从硬盘启动---grub菜单---按e----进入的,
    
    救援模式:1.修复磁盘。2.修复grub菜单,3.修改运行级别,修改密码
    单用户模式:1.修改运行级别。2.修改忘记的密码
    
    6.进入救援模式之后,选择(1)继续
    回车  (获取root权限)
    输入chroot /mnt/sysimage 
    
    修改修改密码,修改运行级别了
    
    exit
    reboot
    
    选择救援模式(3)---救援模式(4)--输入修改后的密码进入系统)
    

    场景二:损坏MBR(磁盘损坏,无法进入系统),进入救援模式解决

    ## 损坏MBR
    [root@oldboy ~]# ll /dev/sda*
    brw-rw---- 1 root disk 8, 0 Apr 24 16:39 /dev/sda  #磁盘
    brw-rw---- 1 root disk 8, 1 Apr 24 16:39 /dev/sda1 #分区
    brw-rw---- 1 root disk 8, 2 Apr 24 16:39 /dev/sda2
    brw-rw---- 1 root disk 8, 3 Apr 24 16:39 /dev/sda3
    
    [root@qls ~]# dd < /dev/zero >/dev/sda bs=1 count=446  (默认单位是b字节)   损坏磁盘的前 512b(小心不是bs=1M count=10 哈哈)
    446+0 records in
    446+0 records out
    446 bytes (446 B) copied, 0.00032064 s, 1.4 MB/s
    
    选救援模式
    选从本地硬盘启动 (假装若无其事)
    刚刚对磁盘的写入已经损坏了磁盘前512b,无法找到操作系统
    遇到这一步的解决方法,1.重装系统(但是数据没了),windows可以用pe,linux不能用pe 
    
    2.
    进入救援模式
    选第二个,进入救援模式
    输入以下内容
    
    sh-4.2# chroot /mnt/sysimage      提权
    bash-4.2# grub2-install /dev/sda  修复
    bash-4.2# exit					退出
    sh-4.2# reboot
    
    修复磁盘扇区成功,可以重新进入系统(数据不变)
    选择从本地硬盘启动,进入正常的操作系统(去看看有没有真的修好
    
    ## 场景3:误删除GRUB菜单(啥都没了),进入救援模式
    ```bash
    [root@oldboy ~]# ll /boot/
    total 91920
    -rw-r--r--. 1 root root   152976 Aug  8  2019 config-3.10.0-1062.el7.x86_64
    drwxr-xr-x. 3 root root       17 Apr 18 22:09 efi
    drwxr-xr-x. 2 root root       27 Apr 18 22:09 grub
    drwx------. 5 root root       97 Apr 23 21:41 grub2  #
    [root@oldboy ~]# cd /boot/grub2
    [root@oldboy grub2]# ll
    total 32
    -rw-r--r--. 1 root root   84 Apr 18 22:12 device.map
    drwxr-xr-x. 2 root root   25 Apr 18 22:12 fonts
    -rw-r--r--. 1 root root 4261 Apr 18 22:13 grub.cfg #
    
    [root@qls ~]# rm -fr /boot/grub2/
    [root@qls ~]# reboot
    

    从硬盘进入(假装若无其事)

    grub2菜单被删除,简单的ll,ls,命令都不能使用
    grub2菜单被删除,就肯定进不去单用户模式,单用户模式是进入grub2菜单之后,按e进入的
    再次进入救援模式
    输入以下内容,看右下角,alt+tab 可以切换窗口
    
    sh-4.2# chroot /mnt/sysimage     提权
    bash-4.2# grub2-install /dev/sda
    bash-4.2# grub2-mkconfig -o /boot/grub2/grub.cfg  创建配置文件
    bash-4.2# exit
    sh-4.2# reboot
    

    选从本地硬盘启动,进入命令行模式
    可以进入系统了,说明/boot/grub2/grub.cfg已经做好了
    如果不想再进入光驱系统了,那么关闭虚拟机,选择打开电源进入固件,进入bios。选择boot
    把Hard Drive 提到第一位,f10保存退出,这样重新启动,虚拟机将会直接从本地硬盘进入系统


    C6 C7

    systemd优势

    1.最新系统都采用systemd管理(RedHat7,CentOS7,Ubuntu15...)
    2.CentOS7 支持开机并行启动服务,显著提高开机启动效率
    3.CentOS7关机只关闭正在运行的服务,而CentOS6,全部都关闭一次。
    4.CentOS7服务的启动与停止不在使用脚本进行管理,也就是/etc/init.d下不在有脚本。
    5.CentOS7使用systemd解决原有模式缺陷,比如原有service不会关闭程序产生的子进程。

    什么是systemd
    systemd即为system daemon守护进程,为系统的启动和管理提供一套完整的解决方案。
    systemd相关的配置文件
    /usr/lib/systemd/system #类似C6系统的启动脚本目录/etc/init.d/
    /etc/systemd/system/ #类似C6系统的/etc/rc.d/rcN.d/
    /etc/systemd/system/multi-user.target.wants/


    Linux一直以来都采用init进程作为爸爸,但是init有两个缺点:
    1.启动时间长,init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
    2.启动脚本复杂,初始化完成后,系统会加载很多脚本,脚本都会处理各自的情况,这回让脚本多而复杂

    systemd 相关文件

    相关文件 CentOS6 CentOS7
    服务启动脚本存放路径 /etc/init.d /usr/lib/systemd/system
    开机自启服务存放路径 /etc/rcN.d /etc/systemd/system/N.target.wants
    默认运行级别 /etc/inittab /etc/systemd/system/default.target

    systemd启动相关命令

    system V init CentOS6 systemd CentOS7 作用
    /etc/init.d/nginx start systemctl start nginx 启动nginx服务
    /etc/init.d/nginx stop systemctl stop nginx 停止nginx服务
    /etc/init.d/nginx status systemctl status nginx 查看服务的启动状态
    /etc/init.d/nginx restart systemctl restart nginx 重启服务
    /etc/init.d/nginx reload systemctl reload nginx 不停止服务,重新加载nginx配置文件
    systemctl is-acvite nginx 判断nginx服务是否存活(写脚本用)
    systemctl mask nginx 禁止服务运行
    systemctl unmask nginx 取消禁止
    service nginx start service nginx start 启动nginx服务

    service不能TAB,c6c7都可以使用service命令(向下兼容)
    restart 停止服务,重新加载nginx配置文件,然后再启动,reload 不停止服务,重新加载nginx配置文件,只有nginx可以使用reload(reload报错就用重启restart试试)
    ./nginx -t 或者 /app/nginx/sbin/nginx -t 检查nginx配置文件有没有问题,有错误的话就显示错误的位置,不能nginx -t 是因为nginx没有加入到环境变量(PATH)

    [root@oldboy ~]# systemctl is-active nginx
    unknown
    [root@oldboy ~]# systemctl start nginx
    [root@oldboy ~]# systemctl is-active nginx
    active
    
    [root@oldboy ~]# vim nginx.sh
    panduanjieguo=$(systemctl is-active nginx)
    if [ $panduanjieguo == 'active' ];then
            echo 'nginx存活'
    else
            echo 'nginx不存活'
    fi
    
    [root@oldboy ~]# systemctl mask nginx
    Created symlink from /etc/systemd/system/nginx.service to /dev/null.
    创建了从/etc/systemd/system/linix.service到/dev/null的符号链接。(#软链接)
    [root@oldboy ~]# systemctl start nginx
    Failed to start nginx.service: Unit is masked.
    [root@oldboy ~]# systemctl unmask nginx
    Removed symlink /etc/systemd/system/nginx.service.
    

    systemd开机自启动相关命令

    C6 C7 作用
    chkconfig --list systemctl list-unit-files 查看开机自启的服务
    chkconfig nginx on(2345) systemctl enable nginx 加入开机自启动
    chkconfig nginx off systemctl disable nginx 关闭开机自启动
    chkconfig --list nginx systemctl is-enabled nginx 查看指定服务是否被开机自启
    chkconfig --add nginx systemctl daemon-reload 当我们手写脚本时让系统认识
    [root@oldboy ~]# chkconfig --list|grep 3:on   #在c6好用
    
    Note: This output shows SysV services only and does not include native
          systemd services. SysV configuration data might be overridden by native
          systemd configuration.
    
          If you want to list systemd services use 'systemctl list-unit-files'.
          To see services enabled on particular target use
          'systemctl list-dependencies [target]'.
    
    network        	0:off	1:off	2:on	3:on	4:on	5:on	6:off
    
    [root@oldboy ~]# systemctl list-unit-files
    autovt@.service                               enabled 
    blk-availability.service                      disabled
    brandbot.service                              static
    

    systemd服务状态

    服务状态 状态说明
    loaded 服务单元的配置文件已经被处理
    active(running) 服务的一个或多个进程在运行中
    active(exited) 一次性运行的服务成功被执行并退出(服务运行后完成任务,相关进程会自动退出)
    active(waiting) 服务已经运行但在等待某个事件
    inactive 服务没有在运行
    enable 服务设定为开机运行
    disabled 服务设定为开机不运行
    static 服务不能被设定开机启动,但可以由其他服务启动该服务
  • 相关阅读:
    Ubuntu使用之Svn命令小技巧
    Android
    Python&amp;MySQL&amp;PyQt
    YII进行数据增删改查分析
    UVA270-Lining Up
    block高级功能
    HDU-2665-Kth number(划分树)
    Android模糊演示样例-RenderScript-附效果图与代码
    HTTP状态码具体解释
    近期写的一个控件——Well Swipe beta 1.0
  • 原文地址:https://www.cnblogs.com/syy1757528181/p/12813983.html
Copyright © 2011-2022 走看看