Systemd 使用教程(二):Unit 的概念

本教程将由浅入深的介绍 linux 中 Systemd 的知识和相关使用(同时也方便自己后续查阅)

【二】 Systemd 单元(Unit)的概念

虽然我想介绍的比较偏实际操作,但是 Unit 的概念对于理解 systemd 非常重要,所以单独介绍一下。

在 Systemd 里,Unit 是管理系统资源的基本单元。它是对系统中各类资源(如服务、设备、挂载点等)的抽象表达,借助配置文件来定义资源的属性、启动条件和依赖关系。

Systemd 借助管理这些 Unit 单元,达成系统的启动、停止、重启等操作,提升了系统管理的效率与灵活性。

Unit 主要包括以下类型,systemd 通过配置文件的 扩展名 来识别 Unit 的类型。

  • 服务(Service):用于管理后台进程,像网络服务、数据库服务等。
  • 目标(Target):代表系统的特定状态或一组相关服务的集合状态。例如 multi-user.target 表示多用户模式,graphical.target 表示图形界面模式。它可作为其他服务启动顺序的参考,便于组织和协调服务启动
  • 设备(Device):对应于系统中的硬件设备。Systemd 可根据设备的插入和移除自动加载或卸载相关驱动和服务。
  • 挂载点(Mount):用于定义文件系统的挂载点。描述了如何以及在何处挂载文件系统,类似于 /etc/fstab 的功能。Systemd 可在系统启动时自动挂载文件系统,确保数据存储的可用性。
  • 自动挂载点(Automount):与 Mount 配合,当访问特定目录时自动触发挂载文件系统。这提供了按需挂载的机制,减少了不必要的资源占用,提高了系统性能。
  • 套接字(Socket):管理套接字资源,包括网络和本地套接字。Systemd 监听特定端口或路径,有连接请求时自动启动相应服务,实现服务的按需启动,节省系统资源。
  • 交换分区(Swap):管理系统的交换分区。在系统启动时激活交换分区,当内存不足时,将内存数据交换到交换分区,保证系统稳定运行。
  • 切片(Slice):对系统资源进行分组管理。将相关服务或进程划分到同一切片,可限制其使用的 CPU、内存等资源,实现资源合理分配和隔离。
  • 路径(Path):监视文件系统路径变化。当指定路径发生特定事件(如文件修改)时,触发相应操作,如启动服务,实现系统的自动化响应。

systemd 会根据配置文件的扩展名的不同来读取特定的配置,例如服务(Service)类型的配置文件,会尝试读取 ExecStartExecStop 来确定如何启动和停止服务;

而挂载(Mount)类型的配置文件,systemd 会尝试读取 WhatWhere 来确定如何进行设备挂载。

### Systemd 命令入门教程 #### 了解 Systemd 的基本概念 Systemd 是一组用于管理系统和服务的工具集,取代了传统的 init 系统。名称中的 `d` 表示守护进程 (daemon),意味着该程序旨在持续运行并监控系统状态[^2]。 #### 查看版本信息 可以通过执行以下命令来查看当前安装的 systemd 版本: ```bash $ systemctl --version ``` 此命令会显示 systemd 及其依赖库的具体版本号。 #### 控制单元Unit) systemctl 工具用来控制 systemd 单元(unit)。这些单元代表操作系统上的不同组件或资源,如服务(service)、套接字(socket) 和挂载点(mount point)[^1]。 ##### 启动和停止服务 要启动某个特定的服务,可使用如下命令: ```bash sudo systemctl start <service_name>.service ``` 同样地,如果想要停止正在运行的服务,则应输入: ```bash sudo systemctl stop <service_name>.service ``` 请注意替换 `<service_name>` 为实际的服务名。 #### 设置开机自启项 为了让某项服务随计算机一起自动加载,需启用它作为目标(target)的一部分: ```bash sudo systemctl enable <service_name>.service ``` 相反操作则是禁用一项已有的自启动项目: ```bash sudo systemctl disable <service_name>.service ``` 上述指令均会影响 `/etc/systemd/system/` 下的相关配置文件[^4]。 #### 查询服务状态 为了获取有关指定服务的状态详情,可以运用下面这条语句: ```bash systemctl status <service_name>.service ``` 这不仅能够告知服务是否处于活动(active)之中,还会提供最近的日志条目以及其他有用的信息。 #### 切换运行级别(Runlevel) 不同于旧版基于 runlevels 的初始化方案,systemd 引入了 targets 来定义系统的预期工作模式。例如切换至多用户环境下的文本终端界面,应该这样做: ```bash sudo systemctl isolate multi-user.target ``` 对于进入带有图形化登录屏幕的目标而言,相应的命令是这样的: ```bash sudo systemctl isolate graphical.target ``` 值得注意的是,默认情况下大多数现代发行版都将指向其中之一作为初始启动时的选择。 #### 自定义配置 当需要调整现有设定或是创建全新的 unit 文件时,应当编辑位于 `/lib/systemd/system/` 或者 `/etc/systemd/system/` 中对应的 .service 文件。后者优先级更高,并允许局部重写全局默认值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郎碎碎念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值