浅谈systemd

2023-11-07


systemd的基本概念

一、system的简要介绍

  • 定义
      系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程
  • 新特性
    • 系统引导时实现服务并行启动
    • 按需启动守护进程
    • 自动化的服务依赖关系管理
    • 同时采用socket式与D-Bus总线式激活服务
    • 系统状态快照
  • systemd的核心概念:unit
    unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息
  • systmed的配置文件
    • /usr/lib/systemd/system:每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
    • /run/systemd/system:系统执行过程中所产生的服务脚本,比上面目录优先运行
    • /etc/systemd/system:管理员建立的执行脚本,类似于/etc/rcN.d/Sxx的功能,比上面目录优先运行

二、Systemd的Unit类型

  • systemctl -t help:查看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,用于定义文件系统中的一个文件或目录使用,常用于当文件系统变化时,延迟激活服务,如:spool 目录

三、Systemd的新特性

  • 关键特性
    • 基于socket的激活机制:socket与服务程序分离
    • 基于d-bus的激活机制:
    • 基于device的激活机制:
    • 基于path的激活机制:
    • 系统快照:保存各unit的当前状态信息于持久存储设备中向后兼容sysv init脚本
  • 不兼容
    • systemctl命令固定不变,不可扩展
    • 非由systemd启动的服务,systemctl无法与之通信和控制

Systemd的管理服务

  语法: systemctl COMMAND name.service
一、管理服务

  • 启动:systemctl start name.service,相当于Centos6的service name.service start
  • 停止:sysytemctl stop name.service,相当于Centos6的service name.service stop
  • 重启:systemctl restart name.service,相当于Centos6的service name.service restart
  • 状态:systemctl status name.service,相当于Centos6的service name.service status
  • 条件式重启:已启动才重启,否则不做操作
    sysytmectl try-restart name.service,相当于Centos6的service name condrestart
  • 重载或重启服务:先加载,再启动
    systmenctl reload-or-restart name.service
  • 重载或条件式重启服务:
    sysytemctl reload-or-try-restart name.service
  • 禁止自启动和手动启动
    systemctl mask name.service
  • 取消禁止自启动和手动启动
    systmectl unmask name.service
[root@Centos8 ~]#systemctl mask httpd
Created symlink /etc/systemd/system/httpd.service → /dev/null.
[root@Centos8 ~]#systemctl unmask httpd
Removed /etc/systemd/system/httpd.service.
#结论:mask和umask命令实际为建立/删除指向/dev/null的软链接
  • 实验:修改unit
    修改 /usr/lib/systemd/system/httpd.service文件,将Description 改为The Apache HTTP,此时查看systemctl status httpd状态,发现服务正常运行,但是描述没有改变
    Warning: The unit file, source configuration file or drop-ins of httpd.service changed on disk. Run 'systemctl daemon-reload' to reload units.
    #已经给出提示了
    ● httpd.service - The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
    Active: active (running) since Sun 2019-11-03 17:14:36 CST; 11min ago
    
    #据状态信息的提示,执行`sysytemctl daemon-reload`,再查看状态发现名称改变了
    [root@Centos8 /usr/lib/systemd/system]#systemctl daemon-reload
    [root@Centos8 /usr/lib/systemd/system]#systemctl status httpd
    ● httpd.service - The Apache HTTP

当服务正在运行的时候,对服务文件的unit进行改动,必须要重载才能更新
二、查看服务

  • 查看某服务当前激活与否的状态:
    sytemctl is-active name.service
  • 查看所有已经激活的服务:
    systemctl list-units -type service
    systemctl list-units -t service
  • 查看所有服务:
    systemctl list-units -t service -a or -all

三、设置服务开机状态

  • 设定某服务开机自启动
    systemctl enable name.service,相当于Centos6的chkconfig name on
  • 设定某服务开机禁止自启动
    systemctl disable name.service,相当于Centos6的chkconfig name off
  • 查看所有服务的开机自启状态
    systemctl list-unit-files,相当于Centos6的 chkconfig --list
  • 用来列出该服务在哪些运行级别下启用和禁用:
    ls /etc/systemd/system/*wants/sshd.service,相当于Centos6的 chkconfig sshd --list
  • 实验:设置服务自启和禁止自启
[root@Centos8 ~]#systemctl list-unit-files | grep httpd
httpd.service                                             disabled
#查看httpd服务原来状态是禁止自启
[root@Centos8 ~]#systemctl enable httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
#让httpd服务开机自启后,提示创建了软链接
[root@Centos8 ~]rm -f /etc/systemd/system/multi-user.target.wants/httpd.service
#删除这个软链接文件
[root@Centos8 ~]#systemctl list-unit-files | grep httpd
httpd.service                                              disabled 
#查看httpd状态,发现仍然是禁止自启动
[root@Centos8 ~]#ln -s /usr/lib/systemd/system/httpd.service /etc/systemd/system/multi-user.target.wants/httpd.service
#创建原来的软链接文件
[root@Centos8 ~]#systemctl list-unit-files | grep httpd
httpd.service                                              enabled
#此时查看httpd状态,已经是开机自启动
[root@Centos8 ~]#systemctl disable httpd
Removed /etc/systemd/system/multi-user.target.wants/httpd.service
#设置httpd开机禁止自启,提示删除了软链接文件
[root@Centos8 ~]#systemctl is-enabled httpd
disabled
#查看状态,已经变为禁止开机自启动

总结:将某个服务设为自启或者禁止自启,实际上就是在相应的文件夹建立软链接文件的过程,systemd通过查询软链接文件的存在与否判断启用/禁止自启的状态。
四、其他命令

  • 查看服务是否开机自启:
    systemctl is-enabled name.service
    systemctl list-unit-files | grep name.service
  • 查看服务的依赖关系:
    `systemctl list-dependencies httpd.service
[root@Centos8 ~]#systemctl list-dependencies httpd.service
httpd.service
● ├─-.mount
● ├─httpd-init.service
● ├─system.slice
● └─sysinit.target
●   ├─dev-hugepages.mount
●   ├─dev-mqueue.mount
●   ├─dracut-shutdown.service
●   ├─import-state.service
●   ├─iscsi.service
●   ├─kmod-static-nodes.service
●   ├─ldconfig.service
●   ├─loadmodules.service
●   ├─lvm2-lvmpolld.socket
●   ├─lvm2-monitor.service
●   ├─multipathd.service
●   ├─nis-domainname.service
●   ├─plymouth-read-write.service
●   ├─plymouth-start.service
●   ├─proc-sys-fs-binfmt_misc.
.
.
  • 杀掉进程:
    systemctl kii unitname

五、服务状态

  • 显示状态:systemctl list-unit-files -t service -a
  • loaded:unit配置文件已处理
  • active(running):一次或多次持续处理的运行
  • active(exited):成功完成一次性的配置
  • active(waiting):运行中,等待一个事件
  • inactive:不运行
  • enabled:开机启动
  • disabled:开机不启动
  • static:开机不启动,但可被另一个启用的服务激活

Systemd的管理运行级别

一、target的概念

  • target:systemd的运行级别管理unit
  • 路径:ls /etc/lib/systemd/system/*.target
  • 显示状态:systemctl list-unit-files
  • systemd的运行级别与传统运行级别的对应关系
    • runlevel0.target, poweroff.target ==> 0
    • runlevel1.target, rescue.target ==> 1
    • runlevel2.target, multi-user.target ==> 2
    • runlevel3.target, multi-user.target ==> 3
    • runlevel4.target, multi-user.target ==> 4
    • runlevel5.target, graphical.target ==> 5
    • runlevel6.target, reboot.target ==> 6
  • 查看target的依赖关系:systemctl list-dependencies name.target

二、级别切换

  • 级别切换:systemctl isolate name.target
    注:只有/lib/systemd/system/*.target文件中AllowIsolate=yes 才能切换(修改文件需执行systemctl daemon-reload才能生效)
  • 显示状态:
    systemctl list-unit-files -t target -a
    systemctl list-unit-files | grep target
  • 查看target:who -r runlevel
  • 获取默认运行级别:systemctl get-default
  • 修改默认运行级别:systemctl set-default name.target

三、Systemd其他命令

  • 切换紧急救援模式: systemctl rescue
  • 切换至emergency模式:systemctl emergency
  • 其他常用命令
    • 传统命令init,poweroff,halt,reboot都成为systemctl的软链接
    • 关机:systemctl halt、systemctl poweroff
    • 重启:systemctl reboot
    • 挂起:systemctl suspend
    • 休眠:systemctl hibernate
    • 休眠并挂起:systemctl hybrid-sleep
[root@Centos8 ~]#ls /sbin/poweroff -l
lrwxrwxrwx. 1 root root 16 May 23 22:48 /sbin/poweroff -> ../bin/systemctl
[root@Centos8 ~]#ls /sbin/reboot -l
lrwxrwxrwx. 1 root root 16 May 23 22:48 /sbin/reboot -> ../bin/systemctl
[root@Centos8 ~]#ls /sbin/shutdown -l
lrwxrwxrwx. 1 root root 16 May 23 22:48 /sbin/shutdown -> ../bin/systemctl

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅谈systemd 的相关文章

  • 刷脸支付选择有软件开发能力的公司

    目前来说支付方式再次发生改变 从原本的扫码支付开始向着刷脸支付转变 因此作为企业商家就需要委托刷脸付款设备公司来定制优秀的刷脸支付系统和设备 而今天就请掌优技说说该如何选择这类公司 现在有很多刷脸付款设备公司 企业商家在选择时应该先把技术和
  • bwlabel函数的C语言实现及用法解析

    bwlabel函数的C语言实现及用法解析 在图像处理的领域中 连通区域标记是一项非常重要的技术 在C语言中 我们可以使用bwlabel函数来实现这个功能 本文将介绍bwlabel函数的实现原理和用法 并通过示例代码来演示其功能 bwlabe
  • 虚函数表详解

    一 概述 为了实现C 的多态 C 使用了一种动态绑定的技术 这个技术的核心是虚函数表 下文简称虚表 本文介绍虚函数表是如何实现动态绑定的 二 类的虚表 每个包含了虚函数的类都包含一个虚表 我们知道 当一个类 A 继承另一个类 B 时 类A会
  • 机器视觉软件工程师的生活是怎样的?

    大家好 本人是刚刚入职的视觉工程师 现在已经一年了 也给大家分享一下在这一段时间里 我做了什么 以及学到了什么 对了 虽然我只做了两个月的视觉工程师 但是我已经连续写了12年的日记了 我想把这个好习惯一直延续下去 也算是做个记录 可能没有人
  • c++多态及虚函数表内部原理实战详解

    1 多态实现方式 c 的多态机制主要是靠虚函数来实现 具体来说 就是用父类的指针指向子类的实例 然后通过父类指针调用子类对象中的成员函数 这样 就实现了父类指针的 多态 想了解虚函数实现机制 就必须先了解对象的存储方式 2 类的存储方式 我
  • python span标签的text属性_python + selenium 获取标签文本的为空解决办法

    一 确定元素是否被隐藏 link driver find element By xx value is displayed print link 如果输出结果为False 说明元素被隐藏了 二 解决方法 1 修改当前定位元素方式方法 修改定
  • 使react组件重新渲染的三种方式

    1 setState 2 props发生变化 3 forceUpdate
  • 目前最大的人像抠图数据集P3M-10k开源了!助力隐私保护的人像抠图研究

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 点击进入 gt CV 微信技术交流群 转载自 京东探索研究院 人像抠图 是指从人物图像中提取人物前景 是计算机视觉领域的基础研究问题之一 1 2 3 4 8 在下游任务
  • 基于vmdk文件创建虚拟机

    基于vmdk文件创建虚拟机 1 准备vmdk文件 下载地址如下 链接 https pan baidu com s 1coQuZw8cgg5oU5bSegsS7Q pwd 5mv0 提取码 5mv0 账号 密码 root sinzuo 2 创
  • react 函数组件和class组件的区别

    一 组件的定义 1 class组件 继承React Component 且需要创建render方法来返回元素 class Welcome extends React Component render return h1 Hello this
  • 使用gdb调试多进程和多线程

    GDB调试多进程 1 默认设置下 在调试多进程程序时GDB只会调试主进程 但是GDB gt V7 0 支持多进程的分别以及同时调试 换句话说 GDB可以同时调试多个程序 只需要设置follow fork mode 默认值 parent 和d
  • 查看pcie总线上的设备ID以及带宽计算

    1 获取设备在pcie总线上的ID lspci 00 00 0 Class 0600 Device 8086 190f rev 07 00 01 0 Class 0604 Device 8086 1901 rev 07 00 01 1 Cl
  • 用python解“计算工资”题

    7 10 计算工资 某公司员工的工资计算方法如下 一周内工作时间不超过40小时 按正常工作时间计酬 超出40小时的工作时间部分 按正常工作时间报酬的1 5倍计酬 员工按进公司时间分为新职工和老职工 进公司不少于5年的员工为老职工 5年以下的
  • v-show和v-if有何异同?

    v show 用于根据条件展示元素 带有 v show 指令的元素始终会被渲染并保留在 DOM 中 v show 只是简单地切换元素的 CSS property display 注意 v show 不支持
  • SQL Server(三)-查询数据(3)

    多表连接查询和子查询 两表连接查询 多表连接查询 左外 右外 全外连接查询 组合查询 子查询 在SSMS的查询设计器中设计查询1 连接查询 1 使用无连接规则连接两表 不设置WHERE子句 所谓无连接规则连接 就是指连接两表的SELECT语

随机推荐

  • PPT怎么切换不同的母版

    首先选中要改变母版的PPT 右击鼠标出现菜单栏 选择版式 版式里面有所有的幻灯片母版可供选择
  • STM32------PWM

    文章目录 前言 一 PWM概述 二 库函数 1 GPIO引脚映射 2 定时器通道1配置 3 定时器通道1比较值 三 PWM1和PWM2模式 1 定义 2 示例 四 dc调光与pwm调光区别 五 呼吸灯源码下载 总结 前言 STM32 PWM
  • centos7防火墙配置详细

    一 条件防火墙是开启的 systemctl start firewalld 1 查看防火墙的配置 firewall cmd state firewall cmd list all 2 开放80端口 firewall cmd permanen
  • 数据挖掘学习(二)——数据探索与清洗

    笔者是一个痴迷于挖掘数据中的价值的学习人 希望在平日的工作学习中 挖掘数据的价值 找寻数据的秘密 笔者认为 数据的价值不仅仅只体现在企业中 个人也可以体会到数据的魅力 用技术力量探索行为密码 让大数据助跑每一个人 欢迎直筒们关注我的公众号
  • 我遇到的BUG:WSL2 忘记用户密码

    我之前忘记了WSL的密码 在网上看了很多瞎写的博文 没起到作用 后来偶然看到一篇文章 解决了这个问题 要在WSL中重置用户密码 需要 在windows命令行里将默认用户切换为root 在WSL里重置用户密码 在windows命令行里将默认用
  • sqlServer数据库索引

    08 索引 8 1 定义 对数据库表中一个或者多个列进行排序的结构 有助于更快的获取信息 是用来获取定位的 8 2 作用 加快数据检索 保证数据的一致性 实现表与表之前的参照完整性 副作用 创建索引会占用空间并耗费一定的时间 创建索引会减慢
  • 【可解释性机器学习】interpretable machine learning——Functional Decomposition

    Functional Decomposition 机器学习中的监督学习模型可被视为一个函数 该函数将高维特征向量作为输入 然后产生预测或分类概率作为输出 函数分解 functional decomposition 分解高维函数并将其表达为可
  • 常见前端安全问题概述

    随着互联网的高速发展 安全问题已成为企业最关注的焦点之一 而前端又是容易引发安全问题的 窗口 作为开发人员的我们 更需要充分了解如何预防和修复安全漏洞 本文将列举常见的前端安全问题 希望对你有所帮助 本文将从以下几种安全问题展开介绍 XSS
  • Jmeter中csvRead函数的使用

    当想要脚本随机传参数时 可以结合csvRead和Random函数使用 也相当于参数化的一种用法 想了解其他参数化方法的读者 可以参考上一篇文档 1 事先准备好存储数据的文档 注意 数据之间使用英文逗号隔开 否则后面随机抽取数据时没有抽取到
  • 【yarn】yarn Job 状态机正常执行流程

    1 概述 今天6月1日 节日值得发个文章 庆祝一下 上一篇文章 Yarn Yarn Service端如何处理客户端提交的任务 在上一篇文章中 我们知道服务器接收到客户端提交的任务之后 会启动多个状态机进行联合操作 最终来解决任务提交之后的全
  • JS内置对象Math的常用方法

    JS内置对象Math的常用方法 1 向上取整 Math ceil 2 向下取整 Math floor 3 四舍五入 Math round 4 绝对值 Math abs 最大值 Math max 最小值 Math min 7 随机数 Math
  • 5 种方法重复执行历史命令

    Linux 下 如果要执行一条或多条之前输过的指令 要怎么处理 很多人会想到使用上下箭头去翻查历史输入的命令 这当然是可以了 除了这种方法 本文再介绍另外 5 种方法来实现这样的效果 在正式开始之前 我们先随便执行几条命令 便于后面演示 为
  • Anaconda 更换镜像源、创建虚拟环境并安装 PyTorch

    文章目录 1 更换镜像源 2 选择合适的 CUDA Runtime 版本 2 1 CUDA Runtime 版本不能高于 CUDA Driver 版本 2 2 根据显卡的算力和架构确定 CUDA Runtime 版本 2 3 找到安装 Py
  • Ps2021软件安装Mac(含M1)、Windows版

    一 下载链接 Mac版本 1 M1芯片适用 百度网盘下载地址 提取码 rpyn 2 M1不适用 系统10 15及以上 下载地址 Windows版本 Ps2022 64位 此版本不支持LTSC版本系统 百度网盘下载地址 提取码 wb2d 二
  • MySQL: 运算符使用练习

    前言 练习运算符的使用 加强记忆 案例目的 在已建数据库中创建数据表 并对表中数据进行处理 练习运算符 包括数据运算符 逻辑运算符 位运算符 的使用 操作过程 创建名为 tb15 的数据表 包含 VARCHAR 100 类型的字段 note
  • 在vue中使用this.$refs报错undefined找不到子组件的方法

    最近遇见个问题 在父组件调用子组件的方法时报错undefined 这种情况一般都是父组件调用子组件方法的时候 dom还没更新成功 可以使用 this nextTick 这个方法作用是当数据被修改后使用这个方法会回调获取更新后的dom再渲染出
  • Spring MVC视图解析器

    Spring MVC视图解析器 AbstractCachingViewResolver XmlViewResolver ResourceBundleViewResolver UrlBasedViewResolver InternalReso
  • 报错Caused by java lang ClassNotFoundException Didn't find c

    分享一下我老师大神的人工智能教程 零基础 通俗易懂 风趣幽默 还带黄段子 希望你也加入到我们人工智能的队伍中来 https blog csdn net jiangjunshow 报错信息 03 14 20 24 09 675 15801 1
  • 赛码-接金币-java

    题目描述 小赛非常喜欢玩游戏 最近喜欢上了一个接金币的游戏 在游戏中 使用帽子左右移动接金币 金币接的越多越好 但是金币掉到地上就不能再接了 为了方便问题的描述 我们把电脑屏幕分成11格 帽子每次能左右移动一格 现在给电脑屏幕如图标上坐标
  • 浅谈systemd

    浅谈systemd systemd的基本概念 Systemd的管理服务 Systemd的管理运行级别 systemd的基本概念 一 system的简要介绍 定义 系统启动和服务器守护进程管理器 负责在系统启动或运行时 激活系统资源 服务器进