systemd的新特性及unit常见类型分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了systemd的新特性及unit常见类型分析相关的知识,希望对你有一定的参考价值。

参考技术A

systemd是Linux下的中央系统及设定管理程式(init),包括有守护进程,程序库跟应用程序。开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并以此实现系统初始化时服务的并行启动,同时达到降低shell的系统开销,最终替代现在常用的system v与BSD风格init程序。

systemd组件  与System V风格init相比,
Systemd特点:
• 平行处理所有服务:
systemd可以并行启动不相依的服务。
• on-deamon启动方式
systemd依靠systemctl命令就可以控制systemd,无需其他命令。常驻内存,因此任何要求 (on-demand) 都可以立即处理后续的 daemon 启动的任务
• 服务相依的自我检查:
例如:B服务是架构在A服务上,你手动启动B服务systemd会自动启动A服务。
• 功能分类
system所管理的服务非常之多,它定义了一个服务就是一个unit,相同的unit分为同一类型,systemd 将服务单位 (unit) 区分为 service, socket, target, path,snapshot, timer 等多种不同的类型(type), 方便管理员的分类与记忆。
• 将多个 daemons 集合成为一个群组
如同 systemV 的 init 里头有个 runlevel 的特色,systemd 亦将许多的功能集合成为一个所谓的 target 项目,这个项目主要在设计操作环境的创建, 所以是集合了许多的 daemons,亦即是执行某个 target 就是执行好多个daemon 的意思
• 向下兼容Init服务脚本
基本上, systemd 是可以相容于 init 的启动脚本的,因此,旧的 init 启动脚本也能够通过 systemd 来管理,只是更进阶的 systemd 功能就没有办法支持

Systemd的核心概念是:unit,unit由其相关配置文件进行标识,识别和配置,文件中主要包含了系统服务、监听的socket、保存的快照以及其它与init相关的信息; 这些配置文件主要保存在:
/usr/lib/systemd/system
/run/systemd/system
/etc/systemd/system

target
system所管理的服务非常之多,它定义了一个服务就是一个unit,相同的unit分为同一类型,systemd 将服务单位 (unit) 区分为 service, socket, target, path,snapshot, timer 等多种不同的类型(type), 为了方便管理员的分类、记忆与管理,把多个unit 集合在一起,组成一个target,执行这个target即可执行对应下的多个unit。
systemd将过去的运行级别划分成对应的target,如下:
运行级别:
0 ==> runlevel0.target, poweroff.target
1 ==> runlevel1.target, rescue.target
2 ==> runlevel2.tartet, multi-user.target
3 ==> runlevel3.tartet, multi-user.target
4 ==> runlevel4.tartet, multi-user.target
5 ==> runlevel5.target, graphical.target
6 ==> runlevel6.target, reboot.target

service unit file:
通常由三部分组成:
[Unit]:定义与Unit类型相关的通用选项;用于提供unit的描述信息、unit行为及依赖关系等;
[Service]:与特定类型相关的专用选项;此处为Service类型;
[Install]:定义由“systemctl enable”以及"systemctl disable“命令在实现服务启用或禁用时用到的一些选项;

Unit段的常用选项:

Service段的常用选项:

Install段的常用选项:

过程:
写unit文件可以使用yum 安装http服务来参考写

源码安装http

为httpd编写unit文件

经我测试,如果type设置为:simple,启动程序直接由execstart后面的命令直接运行,并且直接运行在后台中,命令执行起来非常快,但是httpd服务没那么快起来,简单来说,type设置为simple,命令执行虽然快,但因为主进程需要启动子程序,所以直接使用浏览器浏览是看不到效果的;如果设置为forking,命令执行起来很慢,会中断一段时间,但是执行完成后,可以马上浏览看到效果, 并且使用simple有个弊端,因为httpd开辟了很多子程序提供服务,主进程的作用就是启动子进程,当启动完成以后,主进程会结束自身,所以再次使用systemctl status httpd查看,就会显示inactive状态,但其实已经启动了 。如果把type设置为:forking,则不会出现这个问题

service的type详细说明:

接下来可以使用systemctl命令来管理httpd了

至此,源码安装http和编写 unit文件并且实现systemd对其管理的实验成功~~~( ^-^

以上是关于systemd的新特性及unit常见类型分析的主要内容,如果未能解决你的问题,请参考以下文章

Linux的systemd特性及awk使用

Systemd和awk

CentOS 7 System特性 管理服务方式以及与CentOS 6chkconfig的对比

CentOS 7之systemd学习笔记

Httpd-2.4的新特性

systemd新特征与使用介绍