当前位置: 首页 > news >正文

17.1.2 【Linux】systemd使用的unit分类

systemd 有什么好处?

平行处理所有服务,加速开机流程: 旧的 init 启动脚本是“一项一项任务依序启动”的模式,因此不相依的服务也是得要一个一个的等待。但目前我们的硬件主机系统与操作系统几乎都支持多核心架构了,systemd 可以让所有的服务同时启动,因此你会发现到,系统启动的速度变快了!

一经要求就回应的 on-demand 启动方式: systemd 全部就是仅有一只 systemd 服务搭配 systemctl 指令来处理,无须其他额外的指令来支持。不像 systemV 还要 init,chkconfig, service... 等等指令。 此外, systemd 由于常驻内存,因此任何要求 (on-demand) 都可以立即处理后续。

服务相依性的自我检查: 由于 systemd 可以自订服务相依性的检查,因此如果 B 服务是架构在 A 服务上面启动的,那当你在没有启动 A 服务的情况下仅手动启动 B 服务时,systemd 会自动帮你启动 A 服务。这样就可以免去管理员得要一项一项服务去分析的麻烦。

依 daemon 功能分类: systemd 旗下管理的服务非常多,首先 systemd 先定义所有的服务为一个服务单位 (unit),并将该unit 归类到不同的服务类型 (type) 去。 旧的 init 仅分为 stand alone 与 super daemon实在不够看,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 也是有些地方无法完全取代 init 的!包括:

在 runlevel 的对应上,大概仅有 runlevel 1, 3, 5 有对应到 systemd 的某些 target 类型而已,没有全部对应;

全部的 systemd 都用 systemctl 这个管理程序管理,而 systemctl 支持的语法有限制,不像 /etc/init.d/daemon 就是纯脚本可以自订参数,systemctl 不可自订参数。

如果某个服务启动是管理员自己手动执行启动,而不是使用 systemctl 去启动的 (例如你自己手动输入 crond 以启动 crond 服务),那么 systemd 将无法侦测到该服务,而无法进一步管理。

systemd 启动过程中,无法与管理员通过 standard input 传入讯息!因此,自行撰写systemd 的启动设置时,务必要取消互动机制(连通过启动时传进的标准输入讯息也要避免!)

同时 systemd 还有很多特殊的服务类型 (type) 可以提供更多有趣的功能,首先就得要针对 systemd 管理的 unit 来了解一下。

systemd 的配置文件放置目录

基本上, systemd 将过去所谓的 daemon 执行脚本通通称为一个服务单位 (unit),而每种服务单位依据功能来区分时,就分类为不同的类型 (type)。 基本的类型有包括系统服务、数据监听与交换的插槽档服务 (socket)、储存系统状态的快照类型、提供不同类似执行等级分类的操作环境 (target) 等等。配置文件都放置在下面的目录中:

/usr/lib/systemd/system/:每个服务最主要的启动脚本设置,有点类似以前的 /etc/init.d下面的文件;

/run/systemd/system/:系统执行过程中所产生的服务脚本,这些脚本的优先序要比/usr/lib/systemd/system/ 高!

/etc/systemd/system/:管理员依据主机系统的需求所创建的执行脚本,其实这个目录有点像以前 /etc/rc.d/rc5.d/Sxx 之类的功能!执行优先序又比 /run/systemd/system/ 高。

如果想要修改某个服务启动的设置,应该去 /usr/lib/systemd/system/ 下面修改。

systemd 的 unit 类型分类说明

vsftpd与crond算是系统服务,multi-user算是执行环境相关的类型。根据这些扩展名的类型, 我们大概可以找到几种比较常见的 systemd 的服务类型如下:

http://www.lryc.cn/news/137824.html

相关文章:

  • vue离线缓存资源文件
  • 2023华为杯研赛数学建模A题B题C题D题E题F题资料 华为杯
  • 星际争霸之小霸王之小蜜蜂(六)--让子弹飞
  • opencv简单使用
  • SpringBoot 微人事 职称管理模块(十三)
  • 动态规划之0-1背包问题
  • 为什么需要单元测试?
  • 《合成孔径雷达成像算法与实现》Figure3.13——匹配滤波器的三种实现方式
  • Android企业项目开发实训室建设方案
  • 11_Redis经典五大类型源码及底层实现
  • AWS WAF实战、优势对比和缺陷解决
  • 13,【设计模式】代理
  • 基于IDEA使用maven创建hibernate项目
  • 使用Termux在安卓手机上搭建Hexo博客网站,并发布到公网访问
  • 宝塔 杀死 java服务 netstat -tlnp | grep :7003 kill 2205698
  • Python3 数据类型转换
  • Cookie 和 Session 的工作流程
  • AutoSAR配置与实践(基础篇)3.6 BSW的WatchDog功能
  • 运维高级第6次作业
  • MongoDB使用GridFS存储大数据(Java)
  • 内网穿透实战应用-windwos10系统搭建我的世界服务器,内网穿透实现联机游戏Minecraft
  • pytorch基于ray和accelerate实现多GPU数据并行的模型加速训练
  • [蓝帽杯 2022 初赛]domainhacker
  • 在 Pytorch 中使用 TensorBoard
  • Grafana Dashboard 备份方案
  • opencv-疲劳检测-眨眼检测
  • 2023-08-24力扣每日一题
  • 蚂蚁数科持续发力PaaS领域,SOFAStack布局全栈软件供应链安全产品
  • Java后端开发面试题——消息中间篇
  • C++ Windows API IsDebuggerPresent的作用