概述:

系统启动过程中,当内核启动完成,后加载根文件系统,后就绪的一些用户空间的服务的管理工作,就交由init进行启动和管理,在CentOS6之前的init的管理方式都类似,相关的内容我们在之前的文章中也做出过介绍。在CentOS7上,init变成了systemd,其管理方式也发生了重大的变化,本章就跟大家欧一起探讨一些关于CentOS7上的systemd的新特性的内容。具体分为一下几个方面:

1、systemd新特性简介

2、systemd如何管理系统系统上的各服务

3、systemd管理各个服务时,所依赖的unit文件的组织格式

4、systemd相关操作的实际效果展示

第一章    systemd新特性简介

1、init程序的功能介绍

init程序是当系统内核启动后,加载完根文件系统,然后就由内核加载了init程序,并将后续用户空间其他程序的启动和管理工作交由init程序进行管理,除非有需要进行内核特权级别操作时,内核才会被用户空间的各个系统调用,完成一些内核级别的操作

在CentOS5、6上,init初始化用户空间的启动流程为:/sbin/init程序主要是通过读取/etc/inittab文件来完成一定的任务,完成的任务有:

定义默认运行级别(/etc/inittab)

运行系统初始化脚本(/etc/rc.d/rc.sysinit)完成系统初始化

关闭指定运行级别下的各服务,启动指定级别下需要开启的各服务

启动mingetty虚拟终端,调用login程序,显示登录提示符,让终端进行登录

init程序的类型:

centos5:SysV init

其配置文件:/etc/inittab

centos6: Upstart

其配置文件:/etc/inittab和/etc/init/*.conf

centos7:Systemd

其配置文件:/usr/lib/systemd/system/、/etc/systemd/system/

2、systemd的新特性:

<1>系统引导时实现服务并行启动(前提是并行启动的服务之间没有依赖关系)

<2>按需激活进程(进程在没有访问时是不会被启动的,但是服务仍然处于半活动状态,只是服务没有启动)

<3>系统状态快照,自我保存某一时刻进程用户空间状态的快照,可以回滚到某一个时刻

<4>基于依赖关系定义的服务控制逻辑

CentOS7/RHEL7 systemd详解   http://www.linuxidc.com/Linux/2015-04/115937.htm

为什么systemd会被如此迅速的采用? http://www.linuxidc.com/Linux/2014-08/105789.htm

systemd 与 sysVinit 彩版对照表 http://www.linuxidc.com/Linux/2014-09/106455.htm

太有用了!用systemd命令来管理Linux系统!  http://www.linuxidc.com/Linux/2014-09/106490.htm

浅析 Linux 初始化 init 系统,第 3 部分: Systemd  http://www.linuxidc.com/Linux/2014-12/110383.htm

3、systemd的关键特性:

<1>基于socket的激活机制:socket与程序分离,可以在系统启动时,先把某个服务的socket分配给该服务,但该服务可以事先不用启动

<2>基于bus的激活机制:基于总线的激活

<3>基于device的激活机制:当某个设备接入时,systemd可以自动的去激活诸如device unit、mount unit、automount unit对设备进行识别和挂载等

<4>基于path的激活机制:系统可以自动监控某个目录存不存在,文件存不存在,并根据此判断,来激活别的服务、进程等

<5>系统快照:能够保存各unit的当前状态信息于持久存储设备中;从而实现了回滚机制

<6>能向后兼容sysv init脚本:在centos5、6系统上/etc/init.d/目录下的服务脚本,systemd也能够对其进行管理

不兼容的地方:

1):systemctl的命令是固定不变的,也就是说像在centos6上的各类服务脚本的start、stop这类我们可以通过修改服务脚本,去实现service 命令使用的时候后面的参数的变化。但是systemctl控制的时候,则无法通过修改服务脚本去实现systemctl后面参数的变化

2):不是由systemd启动的服务,systemctl无法与之通信,也就是无法对其进行控制。在centos6上,利用服务脚本自身启动时,利用service依然能够对其进行管理,但是centos7上,如果服务脚本自身启动,而不是通过systemctl进行启动,则systemctl就无法对服务做出管理

4、systemd的核心概念:unit

unit由其相关的配置文件进行标识、识别和配置,也就是说一个unit到底定义与否,由其配置文件进行标识。这类配置文件中主要包含了几个类别:系统服务,监听的socket、保存的快照以及其他与init相关的信息,这些配置文件中主要保存在:

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

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

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

unit的常见类型:

service unit:这类unit的文件扩展名为.service,主要用于定义系统服务(其扮演了在centos6上/etc/init.d/目录下的服务脚本的作用)

target unit:这类unit的文件扩展名为.target,主要用于模拟实现"运行级别"的概念

device unit:这类unit文件扩展名为.device,用于定义内核识别的设备,然后udev利用systemd识别的硬件,完成创建设备文件名

mount unit:这类unit文件扩展名为.mount,主要用于定义文件系统挂载点

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

snapshot unit:这类unit文件扩展名为.snapshot,主要用于实现管理系统快照

swap unit:这类unit文件扩展名为.swap,主要用于标识管理swap设备

automount unit:这类unit文件扩展名为.automount,主要用于文件系统自动挂载设备

path unit:这类unit文件扩展名为.path,主要用于定义文件系统中的文件或目录

第二章    systemd如何管理系统上的各个服务

1、systemd对服务的管理(service类unit的管理)

主要是依靠service类型的unit文件进行管控的完成的

systemctl命令:

语法:systemctl [OPTIONS…] COMMAND [SERVICE_NAME.service…]

<1>启动:service SERVICE_NAME start ==>  systemctl start SERVICE_NAME.service

<2>停止:service SERVICE_NAME stop ==>  systemctl stop SERVICE_NAME.service

<3>重启:service SERVICE_NAME restart ==>  systemctl restart SERVICE_NAME.service

<4>状态:service SERVICE_NAME status ==>  systemctl status SERVICE_NAME.service

centos7里面状态信息里显示的loaded 表示是否加入到systemctl可管理的列表中(类似centos6中chkconfig –add的概念,如果是loaded,表示已经添加到列表中,后面disabled表示没有开机自动启动)

<5>条件式重启:(相当于如果服务之前启动了,则对服务进行重启,如果服务之前没启动,则不执行任何操作)

service SERVICE_NAME condrestart ==>  systemctl tryrestart SERVICE_NAME.service

<6>重载或重启服务:(相当于如果服务支持不重启而重载配置文件,就进行重载,如果服务不支持重载配置文件,就重启服务)

cenntos6不支持

systemctl reload-or-restart SERVICE_NAME.service

<7>重载或条件是重启:(相当于如果服务支持不重启而重载配置文件,就进行重载,如果服务不支持重载配置文件,就重启服务,但重启的前提是该服务之前是开启的)

cenntos6不支持

systemctl reload-or-try-restart SERVICE_NAME.service

<8>查看某服务当前是否激活:

centos6不支持

systemctl is-acive SERVICE_NAME.service

<9>查看所有已激活的服务:

systemctl list-unit –type|-t service

<10>查看所有的服务,也就是所有已经装载load的服务,包含已激活和未激活的:

chkconfig –list ==> systemctl list-unit -t service -a

显示出来的信息的含义:

loaded:Unit配置文件已处理
                active(running):一次或多次持续处理的运行
                active(exited):成功完成一次性的配置
                active(waiting):运行中,等待一个事件
                inactive:不运行
                enabled:开机启动
                disabled:开机不启动
                static:开机不启动,但可被另一个启用的服务激活

<11>设置服务可以开机自动启动:

chkconfig SERVICE_NAME on ==> systemctl enable SERVICE_NAME.service

<12>禁止服务开机自动启动:

chkconfig SERVICE_NAME off ==> systemctl disable SERVICE_NAME.service

<13>查看某服务是否能够开机自启动:

chkconfig –list SERVICE_NAME ==> systemctl is-enabled SERVICE_NAME.service

<14>禁止某服务设定为开机自启:

systemctl mask SERVICE_NAME.service

<15>取消上述禁止:

systemctl unmask SERVICE_NAME.service

<16>查看服务的依赖关系:

systemctl list-dependencies SERVICE_NAME.service

2、systemd对target类unit的管理(类似于运行级别的管理)

运行级别的对应关系:

0 ==> runlevel0.target 或 poweroff.target

1 ==> runlevel1.target 或 rescue.target

2 ==> runlevel2.target 或 multi-user.target

3 ==> runlevel3.target 或 multi-user.target

4 ==> runlevel4.target 或 multi-user.target

5 ==> runlevel5.target 或 graphical.target

6 ==> runlevel6.target 或 reboot.target

<1>级别切换:

init 数字 ==> systemctl isolate NAME.target

<2>查看当前运行级别:

runlevel ==> systemctl –list-unit -t target

<3>查看所有装载的target:

systemctl –list-unit -t target -a

<4>查看默认运行级别:

systemctl get-default

<5>设定默认运行级别:

systemctl set-default NAME.target

centos6修改/etc/inittab文件

<6>切换至紧急救援模式:

systemctl rescue

<7>切换至紧急emergency模式:比紧急救援模式加载的东西更加少,紧急救援模式还会执行系统初始化脚本/etc/rc.d/rc.sysinit系统初始化脚本,但emergency不会执行系统初始化脚本,通常用于当装了某些硬件驱动后无法正常启动时,才进入该模式。

systemctl emergency

3、systemd相关的其他常用命令:

关机:systemctl halt、systemctl poweroff

重启:systemctl reboot

挂起:systemctl suspend

快照:systemctl hibernate

快照并挂起:systemctl hybrid-sleep

4、CentOS6与CentOS7上对服务的管理方式对比总结

4、CentOS7的启动流程详解

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

<2>选择启动设备
        <3>引导装载程序, centos7是grub2
        <4>加载装载程序的配置文件: /etc/grub.d/   /etc/default/grub    /boot/grub2/grub.cfg
        <5>加载initramfs驱动模块
        <6>加载内核选项
        <7>内核初始化, centos7使用systemd代替init
        <8>执行initrd.target所有单元,包括挂载/etc/fstab
        <9>从initramfs根文件系统切换到磁盘根目录
        <10>systemd执行默认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需要的服务

更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2016-09/135464p2.htm

CentOS7进程管理systemd详解的更多相关文章

  1. centos7上systemd详解

    centos7上systemd详解  发表于 2016-06-07 |  分类于 linux CentOS 7继承了RHEL 7的新的特性,例如强大的systemd, 而systemd的使用也使得以往 ...

  2. cetos7 systemd 详解

      CentOS7/RHEL7 systemd详解 目录1. 为什么是systemd(1) 关于Linux服务管理(2) SysV init的优缺点(3) UpStart的改进(4) systemd的 ...

  3. 「微信小程序」PHP异步进程async-helper实例详解

    PHP异步进程async-helper实例详解 PHP 的异步进程助手,借助于 AMQP 实现异步执行 PHP 的方法,将一些很耗时.追求高可用.需要重试机制的操作放到异步进程中去执行,将你的 HTT ...

  4. 云计算:Linux运维核心管理命令详解

    云计算:Linux运维核心管理命令详解 想做好运维工作,人先要学会勤快: 居安而思危,勤记而补拙,方可不断提高: 别人资料不论你用着再如何爽那也是别人的: 自己总结东西是你自身特有的一种思想与理念的展 ...

  5. Spring事务管理(详解+实例)

    1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是 ...

  6. (转)Spring事务管理(详解+实例)

    文章转自:http://blog.csdn.net/trigl/article/details/50968079 写这篇博客之前我首先读了<Spring in action>,之后在网上看 ...

  7. (转)centos7优化内核参数详解

    centos7优化内核参数详解 原文:http://blog.csdn.net/xiegh2014/article/details/52132863 cat /etc/sysctl.conf #CTC ...

  8. (转)CentOS7安装KVM虚拟机详解

    原文:https://github.com/jaywcjlove/handbook/blob/master/CentOS/CentOS7%E5%AE%89%E8%A3%85KVM%E8%99%9A%E ...

  9. CentOS 7 中 Systemd详解

    一.systemd的由来 Linux一直以来采用init进程但是init有两个缺点: 1.启动时间长.Init进程是串行启动,只有前一个进程启动完,才会启动下一个进程.(这也是CentOS5的主要特征 ...

随机推荐

  1. 邮件服务器Postfix的管理 重启php-fpm

    Postfix邮件系统安装与配置:Postfix,Cyrus-IMAP,Cyrus-sasl,Dovecot和SPFhttp://www.freehao123.com/postfix-cyrus/Ce ...

  2. 命令行下开启与关闭windows防火墙关端口(转)

    sc config sharedaccess start= auto //设置防火墙服务为自动 net start sharedaccess //开启防火墙服务 关闭端口 netsh firewall ...

  3. webdriver js点击无法点击的元素

    原文地址https://blog.csdn.net/galen2016/article/details/56847545 [WebDriver]调用JavaScript 一.WebDriver 提供了 ...

  4. Singapore retailer will release this adidas NMD R1

    Select spots are restocking the adidas NMD Singapore this Friday, Feb 24th featuring three different ...

  5. centOS下升级python版本,详细步骤

    1.可利用linux自带下载工具wget下载,如下所示:(  笔者安装的是最小centos系统,所以使用编译命令前,必须安装wget服务,读者如果安装的是界面centos系统,或者使用过编译工具则可跳 ...

  6. 常用DOS命令总结

    本文主要参考:http://www.jb51.net/article/12360.htm http://blog.csdn.net/kofterry/article/details/5183110 常 ...

  7. 20145105 《Java程序设计》实验一总结

    实验一   Java开发环境的熟悉 一.    实验内容: (一)使用JDK编译.运行简单的程序 (二)使用idea编辑.编译.运行.调试Java程序. 二.    实验步骤: (一)   命令行下J ...

  8. 2018-2019-1 20189215 《Linux内核原理与分析》第七周作业

    <庖丁解牛>第六章书本知识总结 操作系统内个实现操作系统的三大管理功能:进程管理.内存管理.文件系统.分别对应<操作系统原理>中最重要的3个抽象概念是进程.虚拟内存和文件. L ...

  9. 20145326 《Java程序设计》第4周学习总结

    20145326 <Java程序设计>第4周学习总结 教材学习内容总结 第六章 一.何谓继承 1.继承共同行为 面向对象中,子类继承父类,避免重复的行为定义.不过并非为了避免重复定义行为就 ...

  10. 20172305 2018-2019-1 《Java软件结构与数据结构》第二周学习总结

    20172305 2018-2019-1 <Java软件结构与数据结构>第二周学习总结 教材学习内容总结 本周内容主要为书第三章和第四章的内容: 第三章(以数组来替代栈的作用) 集合(聚集 ...