systemd概述

  )systemd是一种新的linux系统服务管理器,用于替换init系统,能够管理系统启动过程和系统服务,一旦启动起来,就将监管整个系统。在centos7系统中,PID1被systemd所占用;
  )systemd可以并行地启动系统服务进程,并且最初仅启动确实被依赖的服务,极大减少了系统的引导时间,这也就是为什么centos7系统启动速度比centos6快许多的原因;
  )systemctl 是 systemd 的主命令,用于管理系统及服务。 systemd的新特性:
系统引导时实现服务并行启动;
按需激活进程;
系统状态快照;
基于依赖关系定义服务控制逻辑 systemd的关键特性:
基于socket的激活机制:socket与程序分离;
基于bus的激活机制;
基于device的激活机制;
基于Path的激活机制;
系统快照:保存各unit的当前状态信息于持久存储设备中;
向后兼容sysv init脚本,放在/etc/init.d/
注意:
systemctl的命令是固定不变的;非由systemd启动的服务,systemctl无法与之通信

systemd核心概念:unit

    unit由其相关配置文件进行标识、识别和配置;文件中主要包含了系统服务、监听的socket、保存的快照以及其它与init相关的信息; 这些配置文件主要保存在:
/usr/lib/systemd/system
/run/systemd/system
/etc/systemd/system 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, 用于定义文件系统中的一文件或目录

systemd的service unit file详解

)service unit file 通常由三部分组成:
   [Unit]:定义与Unit类型无关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等;
   [Service]:与特定类型相关的专用选项;此处为Service类型;
   [Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项
2)各部分释义:
   [Unit] 段的常用选项:
     Description:描述信息; 意义性描述;
     After:定义unit的启动次序,表示当前unit应该晚于哪些unit启动;其功能与Before相反;
     Requies:依赖到的其它units;强依赖,被依赖的units无法激活时,当前unit即无法激活;
     Wants:依赖到的其它units;弱依赖;
     Conflicts:定义units间的冲突关系
   [Service] 段的常用选项:
     Type:用于定义影响ExecStart及相关参数的功能的unit进程启动类型,其类型有:
        simple:默认值,执行ExecStart指定的命令,启动主进程
        forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
        oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行
        dbus:当前服务通过D-Bus启动
        notify:当前服务启动完毕,会通知systemd再继续往下执行
        idle:若有其他任务执行完毕,当前服务才会运行
     EnvironmentFile:环境配置文件;
     ExecStart:指明启动unit要运行命令或脚本;
     ExecStartPre:在ExecStart之前运行;
ExecStartPost:在ExecStart之后运行;
     ExecStop:指明停止unit要运行的命令或脚本;
     Restart:当设定Restart=1时,则当次daemon服务意外终止后,会再次自动启动。
   [Install] 段的常用选项:
     Alias:别名,可使用systemctl command Alias.service;
     RequiredBy:被哪些units所依赖;
     WantedBy:被哪些units所依赖
注意:对于新创建的unit文件或修改了的unit文件,要通知systemd重载此配置文件,通过命令 systemctl daemon-reload.

实例:编译安装httpd,并实现通过systemd进行管理

1)通过 rpm -q httpd 命令检查系统是否已安装apache,如有先进行卸载;

2)下载Apache(httpd)源码:https://httpd.apache.org/

3)自定义安装依赖APR,需要先下载APR库和PCRE环境:http://apr.apache.org/download.cgi    http://www.pcre.org

4)通过 yum group install "Development Tools" 安装开发工具包

5)解压所有已下载的文件

6)安装PCRE

[root@happiness pcre-8.42]# ./configure --prefix=/usr/local/pcre
[root@happiness pcre-8.42]# make
[root@happiness pcre-8.42]# make install
注意:此处如果安装的是pcre2的版本,后期编译Apache时会出现错误提示:configure: error: Did not find pcre-config script at /usr/local/pcre。
   此时我们需要卸载已安装的pcre2:rm -rf /usr/loca/pcre,直接删除编译安装的目录即可删除pcre。

7)安装APR

[root@happiness apr-1.6.3]# ./configure --prefix=/usr/local/apr
[root@happiness apr-1.6.3]# make
[root@happiness apr-1.6.3]# make install

8)安装APR-util

[root@happiness apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@happiness apr-util-1.6.1]# make
[root@happiness apr-util-1.6.1]# make install

9)安装Apache(httpd)

[root@happiness httpd-2.4.33]# ./configure --prefix=/usr/apache24 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre
[root@happiness httpd-2.4.33]# make
[root@happiness httpd-2.4.33]# make install

10)运行httpd服务

[root@happiness httpd-2.4.33]# /usr/apache24/bin/apachectl start

注意:启动httpd服务时有可能提示:servername未设置:

    AH00557: httpd: apr_sockaddr_info_get() failed for happiness
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

  此时我们可通过修改配置文件解决问题:

[root@happiness httpd-2.4.33]# vim /usr/apache24/conf/httpd.conf

  

11)添加服务脚本,使得可以通过systemd来管理httpd服务:

CentOS7服务的systemctl脚本存放在/usr/lib/systemd目录下,有系统(/usr/lib/systemd/system)和用户(/usr/lib/systemd/user)之分。此处我们在/usr/lib/systemd/system目录下新建httpd.service的脚本文件,内容如下:

[Unit]
Description=The Apache HTTP Server 2.4.33
After=network.target remote-fs.target nss-lookup.target [Service]
Type=simple
EnvironmentFile=/usr/apache24/conf/httpd.conf
ExecStart=/usr/apache24/bin/httpd -k start -DFOREGROUND
ExecReload=/usr/apache24/bin/httpd -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID} [Install]
WantedBy=multi-user.target

此时我们可以通过 systemctl命令来管理httpd服务了。

systemd的新特性及常见的systemd unit类型分析的更多相关文章

  1. systemd的新特性及unit常见类型分析与awk用法示列

    简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理 系统引导的新特性 系统引导时实现服务启动: 按需激活进程: 系统状态快照: ...

  2. 简述systemd的新特性及unit常见类型分析、使用systemd管理编译安装的nginx

    1. systemd新特性 并行处理(同时启动)所有服务. 基于依赖关系定义的服务控制逻辑 系统状态快照 按需激活进程,只有第一次被访问时才会真正启动: 2. systemd的常见unit类型 Ser ...

  3. CSS3新特性,绘制常见图形

    前言:最近准备做一个自己的网页,设计稿中导航我准备设计成矩形,也有hover样式展示的矩形,当中一些头像等等.以前除了画圆,好像真没认真画过其他图形,今天就画画我们常见到的几个图形. 在此之前我们有必 ...

  4. Python3中的新特性(2)——常见陷阱

    1.文本与字节 Python3对文本字符串(字符)和二进制数据(字节)进行了严格区分,'hello'表示一个以Unicode编码保存的文本字符串,而b'hello'表示一个字节字符串. 在Python ...

  5. iOS9新特性之常见关键字、泛型

    #pragma mark -- nullable nullable:可以为空,只能修饰对象,不能修饰基本数据类型 // 方式一: @property (nonatomic, copy, nullabl ...

  6. iOS9新特性之常见关键字

    /* nullable:1.怎么使用(语法) 2.什么时候使用(作用) nullable作用:可能为空 nullable 语法1 @property (nonatomic, strong, nulla ...

  7. 图说jdk1.8新特性(3)--- 注解与类型推测优化

    获取同一类型多个注解 ​ jdk1.8的java.lang.Class类新增了方法getAnnotationsByType方法,该方法可以获取某一个类型的注解列表,具体代码示例如下: public c ...

  8. Java5~11新特性

    Java5~11版本新特性 Java5 Java6 Java7 Java8 Java9 Java10 Java11 Java5 Java5开发代号为Tiger(老虎),于2004-09-30发行 特性 ...

  9. iOS9新特性之泛型

     iOS9新特性之泛型 作用:限制类型 好处:1.提高开发规范,减少程序员之间的交流 2.通过集合取出来的对象,直接当作泛型对象使用,可以直接使用点语法(id类型不能使用点语法) 使用场景: 1.在集 ...

随机推荐

  1. 微信小程序开发3-小程序的代码组成

    1.​小程序由配置代码JSON文件.模板代码 WXML 文件.样式代码 WXSS文件以及逻辑代码 JavaScript文件组成 2.JSON: (JavaScript Object Notation) ...

  2. VS2015开发环境的搭建

    下面我教大家如何搭建VS2015 [环境]我的环境WIN8.1专业版(Ghost) [过程] [1]打开我们的附件vs2015.ent_chs.iso然后我们会进入到这个ISO文件中(windows版 ...

  3. spring-wind 搭建过程问题记录

    最近想搭一个 shiro+ssm的快速开发框架,用于后台管理以及微信公众号的开发.后台主要是权限管理,于是选择有spring+shiro,微信公众号的前端页面搜了下有用velocity开发的,刚好看到 ...

  4. 面对IBM与亚马逊的犄角攻势,微软云如何招架?

    亚马逊AWS和微软Azure是全球公有云的焦点.不就前公布的财报不久前公布的财报,这两家公司云计算的收入越来越接近,从数据显示来看,亚马逊的利润比微软稍高,有人称微软云的高增长来自于捆绑销售,背后真正 ...

  5. html 页面清浏览器缓存

    <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv=" ...

  6. Windows ->> FIX: “The security database on the server does not have a computer account for this workstation trust relationship”

    前几天在做AlwaysOn实验时遇到搭建活动目录域时某台已经加入AD的机器无法以域管理员账户登录的情况. 报错信息是:The security database on the server does ...

  7. c++11简单的线程

    线程的管理 启动线程 为了让编译器识别 std::thread 类,这个简单的例子也要包含 <thread> 头文件. 如同大多数C++标准库一样 线程在std::thread对象创建(为 ...

  8. 美国加拿大著名公共知识分子简·雅各布斯 (Jane Jacobs)的5本书

    作者是美国.加拿大著名公共知识分子.最近看了她的三本书<城市经济><城市与国家财富><经济的本质>.出版社把这三本书归入“城市-经济”三部曲,三本书英文原版的出版日 ...

  9. [原]Ubuntu 下安装Mongodb

    Mongodb是一款开源的数据库,这里不用我多说了,下面说一下Ubuntu下安装Mongodb可能遇到的问题和解决方案. 故事背景: 今天M$促销,1¥Windows Azure 4000¥-30天的 ...

  10. D3——散点图Scatterplot

    散点图 //Width and height ; ; ; var dataset = [ [, ], [, ], [, ], [, ], [, ], [, ], [, ], [, ], [, ], [ ...