systemd和systemctl

systemd:

     POTS–>boot Sequence(BIOS)–>Bootloader(MBR)–>kernel(ramdisk)–>rootfs(swithroot)–>/sbin/init     

          init:

               CentOS 5 :SysV init

               CentOS 6:UPstart

               CentOS 7:systemd

systemd的新特性:

          系统引导时实现服务并行启动;

          按需激活进程;

          系统状态快照;

          基于依赖关系定义服务控制逻辑;

        同时采用socket式与D-bus总线式激活服务

核心概念:unit

          unit由其相关配置文件进行标识,识别和配置;文件中主要包含了系统服务,监听的socket,保存的快照以及其他的与init相关的信息;

这些配置文件主要保存在/usr/lib/systemd/system,/run/systemd/system,/etc/systemd/system

配置文件:

    /usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/

    /run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行

    /etc/systemd/system:管理员建立的执行脚本,类似与/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行

        

unit的常见类型:

     Service unit:文件扩展名为.service,用于定义系统服务

     Target unit:文件扩展名为.target,用于模拟实现“运行级别”

     Device unit:文件扩展名为.device,用于定义内核识别的设备;

     Mount unit:文件扩展名.mount,用于定义文件系统挂载点;

     Socket unit:文件扩展名.socket,用于标识进程间通信用到的socket文件;

     Snapshot unit:文件扩展名.snapshot:用于管理系统快照

     Swap unit:文件扩展名.swap:用于标识管理swap设备

     Automount unit:.automount:文件系统自动挂载点设置

     Path unit:.path,用于定义文件系统的一文件或目录;

关键特性:

    基于socket的激活机制:socket与程序分离;

     基于bus的激活机制;

     基于device的激活机制;

     基于path的激活机制;

     系统快照:保存个unit的当前状态信息于持久存储设备中;

     向后兼容sysv init 脚本;

       /etc/init.d/

不兼容:

     systemctl的命令是固定不变的;

     非由systemd启动的服务,systemctl无法与之通信

管理系统服务:

    CentOS 7:service类型的unit文件;  

        

    systemctl命令:

           systemctl – Control the systemd system and service manager 

      格式为:systemctl [OPTIONS…] COMMAND [NAME…]

命令对比:

     启动:service NAME start ===》systemctl start NAME.Sservice

    停止:service NAME stop ===》systemctl stop NAME.Sservice

    重启:service NAME restart===》systemctl restart NAME.Sservice

    状态:service NAME status===》systemctl status NAME.Sservice

blob.png

    条件时重启:service NAME condrestart ===>systemctl  try-restart NAME.service

         centos 7. 如果服务此前是启动的,就重启,如果没有启动就不管了;

         centos 6. 如果服务此前是启动的,就重启,如果没有启动就将它启动

    重载或重启服务:systemctl reload-or-restart  NAME.service

        centos 7  如果没服务支持重载就重载此服务,如果不支持,就重启此服务

    重载或条件式重启服务:systemctl reload-or-try-restart  NAME.service

        centos 7  如果没服务支持重载就重载此服务,如果不支持,就尝试重启此服务

    查看某服务当前激活与否的状态:systemctl is-active  NAME.service

 blob.png  

    查看所有已激活的服务:chkconfig –list ====>systemctl list-units –type service(简写为-t)

 blob.png

    查看所有的服务:chkconfig –list ====>systemctl list-units –type service –all (简写为-t,-a)

 blob.png   

   设置服务开机自启:chkoncfig NAME on ====>systemctl enable  NAME.service

 blob.png

    禁止服务开机自启:chkoncfig NAME off ====>systemctl disable  NAME.service

 blob.png

    查看某服务是否能开机自启:chkconfig –list NAME ===>systemctl  is-enabled NAME.service

 blob.png

    禁止某服务设定为开机自启:systenctl  mask  NAME.service

    取消禁止某服务设定为开机自启:systenctl  unmask  NAME.service

 blob.png

    查看服务的依赖关系:systemctl  list-dependencies NAME.service

 blob.png

    查看所有服务的开机自启状态:systemctl list-unit-files –type service 

 blob.png

    杀掉进程:

        systemctl kill 进程名 

    列出失败的服务

 blob.png

服务状态:

systemctl list-units –type service –all 显示状态    

blob.png

loaded:Unit配置文件已处理

active(running):一次或多次持续处理的运行

active(exited):成功完成一次性的配置

active(running):运行中,等待一个事件

inactive:不允许

enbled:开机启动

disabled:开机不启动

static:开机不启动,但可被另一个启用的服务激活

管理target units:

    unit配置文件:.target

    ls /usr/lib/systemd/system/*.target 

blob.png

 systemctl list-unit-files –type target –all

blob.png 

  查看所有级别:systemcl  list-units –type target –all

blob.png

   运行级别:

        0====> runlever0.target,poweroff.target

        1====> runlever1.target ,recuse.target

        2====> runlever2.target, multi-user.target

        3====> runlever3.target, multi-user.target

        4====> runlever4.target, multi-user.target

        5====> runlever4.target , graphical.target

        6====> runlever4.target,reboot.target

     级别切换: init N ====>systemctl  isolate NAME.target

        例如:切换到图形界面 :systemctl  isolate graphical.target

     查看级别:runlevel  who -r ===>systemcl  list-units –type target

blob.png 

查看所有级别:systemcl  list-units –type target –all

blob.png

注: 只有/lib/systemd/system/*.target 文件中AllowIsolate=yes  才能切换( 修改文件需执行systemctl daemon-reload 才能生效)

    获取默认运行级别:systemctl  get-default

    修改默认运行级别:systemctl  set-default  NAME.target

运行原理其实就是创建和删除软链接文件

blob.png

    切换值紧急救援模式:systemctl rescue(级别1,会执行/etc/rc.d/init)

    切换值emergency模式:systemctl emergency(最简洁的模式,)

其他常用命令:

    关机:systemctl halt, systemctl poweroff

    重启:systemctl reboot

    挂载:systemctl suspend

    快照:systemctl hibernate

    快照并挂起:systemctl hybrid-sleep

service  unit file:

    

    相关布尔值,1 、yes 、on 、true  都是开启,0 、no 、off、false 

     文件通常有三部分组成: 

     [Unit] :定义与unit类型无关的通用选项;用于提高unit的描述信息,unit行为及依赖关系等;

     [Service] :定义与特定类型相关的专业选项;此处为service

     [Install] :定义有“systemctl enable”以及“systemctl disable ”命令在实现服务启动和禁用时用到的一些选项

blob.png

unit段的常用选项:

          Description:描述信息,意义性描述

          After:定义unit的启动次序;表示当前unit应该晚于那些unit启动;其功能与before相反

          Wants:依赖到的其他units;(弱依赖),被依赖的units无法激活时,当前unit可以激活

          Requies:依赖到的其他units;(强依赖),被依赖的units无法激活时,当前unit即无法激活

          Conflicts:定义units间的冲突关系;

service段的常用选项:

type:用于定义影响ExecStart及相关参数的功能的unit进程启动类型

    类型:

        simple:由ExecStart所指明的程序启动起来的服务就是主进程(默认值,这个daemon 主要由ExecStart 接的指令串来启动

        ,启动后常驻于内存中)

        forking:由ExecStart所指明的程序启动起来的服务生成的一个子进程将成为主进程,启动完成后,父进程会退出

        oneshot:与simple 类似,不过这个程序在工作完毕后就结束了,不会常驻在内存中

        dbus:与simple 类似,但这个daemon 必须要在取得一个D-Bus的名称后,才会继续运作. 因此通常也要同时设定BusNname= 才行

        notify:类似于simple,在启动完成后会发送一个通知消息。还需要配合

        idle:与simple 类似,要执行这个daemon 必须要所有的工作都顺利执行完毕后才会执行。这类的daemon 通常是开机到最后才执行即可的服务

    EnvironmentFile:定义环境配置文件(此文件会在Exer之前读取,并为Exec提供变量)

    ExecStart:指明启动unit要运行命令或脚本;ExecStartPre(预运行),ExecStartPost(后运行)

    ExecStop:指明停止unit要运行的命令或脚本

    Restart:当设定Restart=1  时,则当次daemon 服务意外终止后,会再次自动启动此服务

      

Install段的常用选项

          Alias:

          RequiredBy:被哪些units所依赖(强依赖)

          WantdBy:被哪些units所依赖(若依赖)

        Also:安装本服务的时候还要安装别的相关服务

注意:对于新创建的unit文件或修改了的unit文件,要通知systemd重载此配置文件

          #systemctl daemon-reload

          

CentOS 7引导顺序 

1.UEFi 或BIOS 初始化,运行POST开机自检

2.选择启动设备

3.引导装载程序,cetnos 7 是gurb2

4.加载装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg

5.加载initramfs驱动模块

6.加载内核模块

7.内核初始化,centos 7使用systemd代替了init

8.执行initrd.target所有单元,包括挂载/etc/fatab

9.从initramfs根文件系统切换到磁盘根目录

10systemd执行默认target配置,配置文件/etc/systemd/default.target /etc/systemd/system/

11.systemd执行sysinit.target初始化系统以及basic.target准操作系统

12.systemd启动multi-user.target下的本机与服务器服务

13.systemd执行multi-user.target下/etc/rc.d/rc.local

14.systemd执行multi-user.target下的getty.target及登入服务

15.systemd执行graphical需要的服务

设置内核参数

设置内核参数,只影响当次启动

启动时,在linux16 行后添加

    systemd.unit=desired.target

    systemd.unit=emergency.target

    systemd.unit=recure.target

recure.target比emergency.targe支持更多的功能,例如日志等

启动排错

文件系统损坏

先尝试自动修复,失败则进入emergency shell,提示用户修复

在 在/etc/fstab 不存在对应的设备和UUID等一段时间,如不可用,进入emergency shell

在/etc/fstab 不存在对应挂载点systemd尝试创建挂载点,否则提示进入emergency shell.

在/etc/fstab 不正确的挂载选项,提示进入emergency shell

破解root口令

1.启动时任意键暂停启动

2.按e键进入编辑模式

blob.png

3.将光标移动linux16 开始的行,添加内核参数rd.break

blob.png

4.按ctrl+x启动

blob.png

5.mount –o remount,rw /sysroot 因为是只读挂载,所要重新挂载,好切换到root环境

blob.png

6.chroot /sysroot切换到root环境

blob.png

7.修改密码

8.touch /.autorelabel(必须有此步骤)

blob.png

9.exit退出,重启,登入成功

blob.png

修复grub2

GRUB “the Grand Unified Bootloader” 引导提示时可以使用命令行界面,可从文件系统引导

主要配置文件:/boot/grub2/grub.cfg

修复配置文件:

    grub2-mkconfig> /boot/grub2/grub.cfg

修复grub(和centos 6的修复一样,就是命令换成了grub2-install,这里就不详细说了,参照前次博客)

grub2-install /dev/sda BIOS环境

grub2-install UEFI环境

原创文章,作者:qiuwei,如若转载,请注明出处:http://www.178linux.com/48257

(0)
qiuweiqiuwei
上一篇 2016-09-22
下一篇 2016-09-22

相关推荐

  • SDCC 2017互联网运维开发实战峰会上海站

    3月17日-19日,由CSDN重磅打造的互联网运维开发实战峰会、数据库核心技术与应用实战峰会和互联网应用 架构实战峰会将在上海举行。 作为SDCC 2017(中国软件开发者大会)系列技术峰会的一部分,秉承干货实料(案例)的内容原则。 这三场峰会将邀请业内顶尖的架构师和技术专家,共同探讨运维工具研发与实践、运维自动化系统的构建、大数据与运维…

    Linux干货 2017-02-11
  • linux 网络管理命令 SS的使用详则

    SS命令 ss命令用来显示处于活动状态的套接字信息,ss迷路可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCO和连接状态信息,而且比netstat更快速更高效。 当服务器的socket连接数量变得非常大时,无论是使用netest命令还是直接  cat/proc/net/tcp 。…

    2017-08-19
  • Linux文件查找之find命令

    前言:        Linux文件种类繁多,难免在维护Linux中会忘记文件的路径。所有在维护Linux中学好查找命令是非常必要的。     Linux查找命令有很多,比如 whereis,type,which,locate,find(重点)。  &nbsp…

    Linux干货 2015-06-15
  • 创建,扩展,缩减LVM2及快照

    相关概念     lvm英文 Logical Volume Manager,逻辑卷管理类似于raid,但又有别于raid, 它是能够将一个或多个底层块设     备组织成一个逻辑设备的模块不具备容错功能,任一设备损坏或分区损坏,对数据是致命的;它主要有三个部分…

    Linux干货 2016-02-14
  • 相识–Varnish

    Varnish与一般服务器软件类似,分为master(management)进程和child(worker,主要做cache的工作)进程。master进程读入命令,进行一些初始化,然后fork并监控child进程。child进程分配若干线程进行工作,主要包括一些管理线程和很多woker线程。 VCL: ”域“专有类型的配置语言 VCL有多个状态引擎,状态之间…

    Linux干货 2017-11-13
  • Linux上文本处理三剑客sed

    Sed是一种在线编辑器,行编辑器,一次处理一行内容,在处理时,把当前处理的行存储在临时缓冲区当中,该缓冲区称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完毕后,把缓冲区的内容送到标准输出:然后紧接着去处理下一行,重复完成相同的操作,直至文件末尾;sed处理的整个过程中,对象文件中的内容并没有发生改变,除非使用重定向来存储处理后的结果。sed主要用…

    Linux干货 2016-08-09