systemd

systemd的新特性(centos 7)

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

按需激活进程,在此之前可以让进程处于半活动状态

系统状态快照:能够自我保存当前系统上没一个用户空间的进程运行状态快照,将来可以迅速恢复到某一种状态,因此用户空间有了时间机器。可以回滚到过去某一时刻的状态

内在的基于依赖关系定义的服务控制逻辑

对与systemd来讲,引入了一个新的核心概念,叫做unit(单元)

核心概念:unit

unit由其相关的配置文件标识、识别和配置:意思就是每一个unit到底定义了与否主要就看他有没有配置文件。这中文件中主要包含了系统服务、监听的端口。保存的快照以及其他与init相关的信息;因此他们就分成了这样几种类别;系统服务类unit、监听端口类unit、快照类的unit以及其他的unit,而这些配置文件主要保存在;

/usr/lib/systemd/system

/run/systemd/system

/etc/systemd/system

所以说这些目录中的每一个文件都成为unit文件,我们进入到这些目录中可以看到许多文件,以文件的后缀名就可以进行识别,以.service结尾的文件为服务类的unit、以.target结尾的文件为目标类的unit、以.socket结尾的文件为监听端口类的unit…;常用的类别如下;

unit的常见类型:

service unit:

文件扩展名为.service,主要用于定义系统服务;所以他类似我们之前使用service httpd {start|restart|status|stup}等相关操作的一些服务脚本,所以他扮演了以前由/etc/inin.d下的服务脚本所扮演的角色。所以说systemctl启动一个服务的时候主要就是靠这个目录下以.service结尾的unit配置文件,这个文件比此前/etc/init.d下的脚本写起来要容易的多

target unit:

文件扩展名为.target,主要用于模拟实现“运行进别”;起始对与systemd而言没有运行级别一说,他的管理法则与sysV和upstart完全是两回事。

device unit:

文件扩展名为.device,主要用于定义内核识别的设备;一次systemd也能够实现对/dev目录下硬件进行识别

mount unit:

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

socket unit:

文件扩展名为.socket,主要用于标识进程间通讯用到的socket文件;我们知道某一个服务启动并监听在某套件字上时就需要先创建一个套接字文件,而这些就是由socket unit来负责管理的。

snapshot unit:

文件扩展名为.snapshot,主要用于管理系统快照

swap unit:

文件扩展名为.swap,主要用于标识、管理swap设备

automount unit:

文件扩展名为.automount,主要用于文件系统的自动挂载点设置

path unit:

文件扩展名为.path,主要用于定义文件系统中的一个文件或目录;他能够监控指定特定路径下的文件或目录,如果该目录或文件不存在systemd会自动创建之

关键特性:

基于socket的激活机制:

也就意味着socket与程序是分离的;我们可以在某个服务启动时先把socket分配给它,但是这个进程可以先不启动。

基于bus的激活机制;

如果总线上存在对某个服务的访问,就基于总线的请求将其激活

基于device的激活机制;

当某个设备插入的时候,它能够自动去激活mount unit、device unit、automount unit.他能够监控当前系统上或内核中所输出的硬件信息,一旦发现某一硬件来了,
就先创建设备文件,再将其自动挂载至某挂载点,如果挂载点不存在还能自动创建。

基于path的激活机制

系统可以监控某个目录或文件在不在,如何某个文件在了就能立刻激活某一个服务,或者能激活另外一个进程。比方说万一某一个进程在运行当中遇到bug崩溃了,
崩溃的时候创建了一个log文件,一旦systemd发现了这个文件就立即去激活一个额外的程序去检测,例如激活一个窗口去提醒用户。

系统快照:

他的好处在于保存各unit的当前状态,因为systemd的所有管理功能都是通过unit来实现的,因此他能保存各unit的当前状态信息于持久存储设备中;
所以将来如果需要回到某一时刻的时候就可以回滚,让用户可在过去与现在之间游走。

向后兼容sysV init脚本;

这就意味着放在/etc/init.d/下的服务脚本,也一样能够靠systemd来启动控制,但是他也有不兼容的内容;
不兼容:
    systemctl的命令是固定不变的;
    非由systemd启动的服务,systemctl无法与之通信,也就意味着无法控制此服务。

如何管理系统服务;

centos 7:系统服务主要是靠service类型的unit文件来实现管控的,而且兼容/etc/init.d/下的给类型服务脚本

systemctl命令
    systemctl [options...] command [name...]

    启动:service name start ==> systemctl start name.service
    停止:service name stop ==> systemctl stop name.service
    重启:service name restart ==> systemctl restart name.service
    状态:service name status ==> systemctl status name.service
    条件式重启:service name condrestart ==> systemctl try-restart name.service
    重载或重启服务:systemctl reload-or-restart name.service
    重载或条件式重启服务:systemctl reload-or-try-restart name.service

    查看某服务当前激活与否的状态:systemctl is-active name.service
    查看所有已激活的服务:systemctl list-units --type service
    查看所有服务(已激活及未激活):chkconfig --list ==> systemctl list-units -t service --all  

    设置服务开机自启:chkconfig name on ==> systemctl enable name.service
    禁止服务开机自启:chkconfig name off ==> systemctl disable name.service
    查看某服务是否能够开机自启:chkconfig --list name ==> systemctl is-enabled name.service

    禁止某服务设定为开机自启和手动启动:systemctl mask name.service
    取消此禁止:systemctl unmask name.service

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

如何管理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:重启

级别切换:

init N ==> systemctl isolate name.target

查看当前运行级别:

runlevel ==> systemctl list-unit --type target

查看所有级别:

systemctl list-units -t target -a

获取默认运行级别:

systemctl get-default

修改默认运行级别:

systemctl set-default name.target

切换至紧急救援模式:

systemctl rescue

切换至emergency(紧急)模式:(不装载设备驱动,也不启动/etc/init.d/下的系统设定脚本)

systemctl emetgency

其他常用命令

关机:systemctl halt,systemctl poweroff
重启:systemctl reboot
挂起:systemctl suspend
快照:systemctl hibernate
快照并挂起:systemctl hybrid-sleep

/usr/lib/systemd/system和/etc/systemd/system/的联系

systemdsystemdsystemd

所谓获取默认运行级别或者设定默认运行级别就是把/etc/systemd/system/目录下的文件向对应的连接修改了而已.
他们是用于设定运行级别以及每一个级别下启动的服务和服务之间的依赖关系的

service unit文件是如何组织的

service unit file:

以httpd为例;(这里vim打开httpd.service文件为例) systemd 此文件通常由三段配置组成;unit,service,install

unit:定义与unit类型无关的通用选项;用于提供unit的描述信息,unit行为及依赖关系等
service:与特点类型相关的专用选项:此处为service类型
install:定义由"systemctl enable"以及"systemctl disable"命令在是实现服务启用或禁用时用到的一些选项
unit段的常用选项
Descrription:描述信息;意义性描述
After:定义unit的启动次序;表示当前unit应该晚于哪些unit启动;其功能与Before相反
Requies:依赖到的其他units;强依赖,被依赖到的units无法激活时,当前units即无法激活
Wants:指明依赖到的其他unit;弱依赖,被依赖到的units无法激活时,不影响当前units的激活
Conflicts:定义units间的冲突关系
service段的常用选项:
Type:用于定义影响ExecStart及相关参数的功能的unit进程启动类型;
    类型:
        simple:表示Execstart指明的程序所启动的进程是一个主进程
        foeking:表示由Execstart指明的程序所启动的进程生成的一个子进程将成为主进程
        oneshot:功能类似与simple,不过在启动后续units之前主进程将会退出.
        dbus:功能也类似与simple,但是后续的units尽在主进程得到dbus名称之后才能启动
        notify:类似与simple,它表示后续的units仅在通过sdnotify函数发送通知以后,才能运行这个命令.
        idle:类似与simple
Environmentfile:环境配置文件,此文件会在Execstart之前被读取,并为Execstart提供一些变量等自定义功能
Execstart:指明启动unit要运行的命令或脚本;ExecStartpre,ExecStartpost
ExecStop:指明停止unit要运行的命令脚本
Restart:表示启动了此项会导致进程退出后重启相关服务的;意思就是进程如果以外终止了,他会自动将其重新启动起来
Install段的常用选项:
Alias:表示当前unit的别名
RequiredBy:被哪些units所依赖
WantedBy:被哪些units所依赖

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

# systemctl daemon-reload

原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/48727

(0)
M20-1马星M20-1马星
上一篇 2016-09-23
下一篇 2016-09-23

相关推荐

  • 学习宣言

    世界上只有一种失败,就是半途而废!

    Linux干货 2016-12-29
  • mysql/mariadb基于ssl的主从复制

     当mysql/mariadb跨越互联网进行复制时别人可以窃取到mysql/mariadb的复制信息, 这些信息是明文的, 因此存在不安全性, 这里通过ssl对复制的信息进行加密      1. 创建证书中心 在主服务器上创建证书中心 cd /etc/pki/CA 生成私钥 (umask&…

    Linux干货 2016-12-05
  • 从Linux小白到大牛——与狼共舞的日子8

    马哥教育网络班21期+第8周课程练习 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥是第2层的设备,它设计用来创建两个或多个LAN分段。其中,每一个分段都是一个独立的冲突域。网桥设计用来产生更大可用宽带。它的目的是过滤LAN的通信流,使得本地的通信流保留在本地,而让那些定向到LAN其他部分(分段)的通信流转发到那里去。每…

    Linux干货 2016-11-14
  • 如何安装CentOS 6.9

    1、打开VMware,点击“创建新的虚拟机”   2、刚开始用的话,一般就选择推荐的典型类型来安装,所以直接点击“下一步”   3、此处选择稍后安装操作系统,这里我们先进行配置,点击“下一步”   4、因为我需要用里面的linux系统,所以选择客户机操作系统为Linux,选择版本为CentOS 64位,单击“下一步”。 &nbs…

    2017-07-11
  • awk大法

    awk awk概念 一款用于数据流的文本处理工具,它将文件作为记录序列处理。在一般情况下,文件内容的每行都是一个记录。每行内容都会被分割成一系列的域,因此,我们可以认为一行的第一个词为第一个域,第二个词为第二个,以此类推。AWK程序是由一些处理特定模式的语句块构成的。AWK一次可以读取一个输入行。对每个输入行,AWK解释器会判断它是否符合程序中出现的各个模式…

    Linux干货 2016-12-04
  • N25第四周总结(lvm)

    lvm 详解 大纲:    1、什么是lvm     2、为什么要使用lvm     3、如何实现lvm     4、lvm各项命令详解   1、什么是lvm:        lmv (Logical Volume Manager…

    Linux干货 2016-12-22

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-26 09:58

    总结的很好,通读下来能学到很多东西,受教了。