系统服务文件

2024年 3月 20日 65.8k 0

在Linux上,系统ctl状态输出显示服务是通过一个称为服务文件的文件加载的。可以在/lib/systemd/system或/etc/systemd/system目录中访问这些文件。

服务文件具有.service扩展名,并包含system d管理服务所需的指令。

System d init系统使用该单元管理系统初始化。单元是执行任务或操作的对象,例如管理服务,这涉及控制和监视它。这些单元本质上是称为服务文件的文件,包括单元依赖项和命令。这些文件对于有效控制后台进程和管理资源至关重要。

在本指南中,我将探讨systemd服务文件、它的结构以及控制服务的主要指令。

在使用SYSTEM D时,术语SYSTEM D服务文件和SYSTEM D单元文件通常可以互换使用,因为从技术上讲,它们指的是同一事物。

什么是Systemd服务文件

在Linux上,systemd使用包含配置指令的服务文件来管理服务,以便systemd能够理解和执行。

要列出单位,请使用systemctl和—list—units命令。

System ctl--列表-单位

要读取任何服务的服务文件,请使用cat命令与文件路径。

cat [/service—file—path]

例如,要查看ssh. service的服务文件,请使用给定的命令。

cat/lib/systemd/system/ssh. service

系统服务文件剖析

一般而言,系统服务单元文件包含三个部分。

  • 单元
  • 服务
  • 安装

特定于服务的单元文件将有一个称为服务部分的特定部分。

请注意,该服务只是一种类型的单元。一个单元可以有不同的类型,如套接字、设备、挂载、自动挂载、交换、目标、计时器、切片和作用域。这些部分被放置在机组和安装部分之间。文件扩展名也将被相应的设备类型替换,例如,套接字设备类型将具有.套接字文件扩展名。

注意:在本指南中,我将重点介绍服务单元类型,因为它被管理员和开发人员广泛使用。

这些章节放在方括号内([])。每个部分都包含一个相关的指令集。下面给出了服务文件的一般结构。

【单位】

指令1=指令1

指令2 =指令2

[服务]

指令1=指令1

指令2 =指令2

[安装]

指令1=指令1

指令2 =指令2

各节的顺序可以更改;但一般都遵循上述顺序。

[单位]科

单元部分包含单元和单元依赖性的描述。按照惯例,这一部分放在服务文件的顶部。常用指令如下:

指令 描述
描述 此指令用于提及服务的名称。说明长度不得超过80个字符。
文档 此指令包含服务的手册页或URL。
需要 此指令用于提到对当前服务的依赖。如果不执行此依赖关系服务的激活,则不会启动当前服务。
此指令用于提及对当前服务的依赖性。但是,不需要激活此依赖项服务即可运行当前服务。
之前 当前设备激活后,将启动本指令中提到的服务。
在启动当前设备之前,将启动本指令中提到的服务。
BindsTo 此指令将当前服务链接到所提及的服务。如果链接的服务重新启动,当前服务也将重新启动。

除了这些指令外,还有两个指令:Condition和Assert。许多服务需要特定的系统条件才能成功运行,这些指令用于提及条件。

[安装]部分

本节不是强制性的,仅当服务需要在启动时激活或停用时才需要。此外,还要提到别名服务。下面列出了安装部分的常用指令:

指令 描述
WantedBy 此指令设置服务的运行级 * 目标。如果目标设置为www.example.com,则服务将在此运行级别上启用。
联系我们 这个指令与WantedBy相似,但是,即使没有指令中提到的依赖项,服务也会被启用。
别名 此指令用于使用另一个名称启用服务。启用服务时,将创建一个使用此名称的符号链接。

多数情况下,多用户.Target被用作WantedBy参数。但是什么是多用户目标呢?

www.example.com表示准备接受非图形多用户会话的系统状态。这是启动GUI之前的状态。

系统有不同的运行级别,让我们来了解一下这些运行级别的功能。

在system d中,根据运行级别对服务进行分组,这些级别称为目标。每个运行级在/etc/systemd/system目录中都有一个扩展名为.Target的文件。服务将基于运行级别的状态运行。

运行级别 目标 状态 文件
0 poweroff 关闭电源(&F) Poweroff.target
1 救援 启动救援炮弹 rescue.target
2,3,4 多用户 启动多用户非图形用户界面外壳 multi-user.target
5 图形 建立多用户图形用户界面外壳 graphical.target
6. 重新启动 关闭和重新启动 Reboot.target

[服务]科

此部分包含服务的配置设置。本节的主要配置是定义在服务开始时要执行的类型和命令。Type和ExecStart是用于设置服务的主要指令。

下表列出了不同类型的服务。

服务类型 描述
简单 当没有提到类型或Busname,而只提到ExecStart时,它是默认类型。systemd首先执行主流程,然后执行后续单元。
分叉 此类型用于在父服务关闭的情况下保持服务运行。它在父进程关闭后派生子进程。
一次拍摄 systemd首先执行主进程,当主进程退出时,后续单元将启动。
dbus 带有dbus的服务用于与总线上的另一个进程通信。如果提到总线名称,则在获取总线名称后,进程将被激活。
通知 服务将在启动进程时通知。系统管理员会在发出通知后前往跟进单位。
闲散 它保持服务,直到所有活动作业都被分派;主要用于改进控制台输出。

以下是"服务"一节中常用的指令:

指令 描述
ExecStart 它保存要执行以开始该进程的命令的完整路径。
ExecStartPre 它保存在主进程开始之前应该执行的命令。
ExecStartPost 它保留了主进程开始后应该执行的命令。
行政长官 它保留重新加载服务配置的命令。
重新启动 在出现故障、成功、异常、中止和看门狗等情况下自动重新启动服务。
RestartSec 以保存服务将自动重新启动之前的秒数。

ExecStart是Service部分中使用的关键指令之一。它包含服务在调用时将执行的可执行文件的完整路径。

结论

systemd服务文件是一个配置文件,它由指令和命令构成,以便systemd可以管理它们。这些文件包含指示systemd如何管理服务的说明。在本指南中,我介绍了如何访问systemd服务文件、其部分以及管理服务的指令。要了解更多关于服务文件说明的信息,请阅读此处的官方文档指南。

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论