我并不是在询问文件系统中配置文件的内容,而是询问 systemctl 本身的内部数据库,或者可能是 systemctl 创建的文件。
问题:
- systemctl 调度程序如何工作?
- 正在运行的服务数据存储在哪里?***不幸的是,这篇文章被外部更正,内容和含义都丢失了。您可以随意重新表述,但对我来说,了解服务记录存储在哪里很重要,这样我就可以删除一个特定的损坏记录。也就是说,在不重新安装操作系统和服务的情况下修复主机。我不知道如何使用 systemctl 实用程序调用来做到这一点。
笔记:这个问题是这个问题的细化如何从 systemd/systemctl 中完全删除不存在的服务?
我们抓了一只跛脚蟑螂,烧掉它并埋掉灰烬。但是他的鬼魂却继续啃着饼干。任务:抓鬼魂。
答案1
没有内部数据库。所有正在运行或失败的服务的状态仅保存在内存中,作为主 systemd 进程的一部分。
在每一个启动时,systemd 从没有任何单元的干净状态启动,然后加载一个“初始”单元(通常是default.target
)并从中构建依赖关系树,仅当其他单元被指定为先前加载的单元的依赖项时才加载它们。
(大多数单元来自通常的 /etc/systemd 和 /usr/lib/systemd 位置。一些单元位于内存中的 /run/systemd 中 - 它们在每次启动和每个守护进程重新加载时都会从 fstab 或 init.d 等源重新生成。)
(此外,每次启动时,systemd 都会根据内核“检测到设备”的 uevent 在内存中创建虚拟 .device 单元,这些 uevent 可能具有由 udev 规则添加的依赖项 - 例如,与蓝牙主机控制器相对应的 .device 单元对 bluetooth.target 具有依赖性。)
答案2
帖子“Systemctl 是什么?深入概述”很好地概述了它的含义,使人们能够简单而简洁地理解。我引用了以下帖子的一部分,我认为这有助于用简单的术语和屏幕截图来解释它。
简单的解释是,systemctl 命令是一个用于交互和配置的实用程序systemd。Systemd 由系统管理库、实用程序和守护进程组成,是 System V 的后继者。初始化守护进程在系统启动时启动并持续运行直到系统关闭。
什么是 Systemctl?
systemctl 命令是一个实用程序,负责检查和控制 systemd 系统和服务管理器。它是系统管理库、实用程序和守护进程的集合,可作为 System V init 守护进程的后继者。事实证明,新的 systemctl 命令在管理服务器服务方面非常有用。它提供有关特定 systemd 服务以及其他具有服务器范围使用率的服务的详细信息。
请记住,大多数 systemctl 命令在成功执行后不会提供任何输出。但是,如果 systemctl 命令未能完成任务,您将收到一条错误消息,提示它失败。
什么是服务?
在 systemd 实用程序中,服务被称为单元。单元是系统知道如何操作和管理的任何资源。单元是 systemd 工具知道如何处理的主要对象。这些资产在名为单元文件的配置文件中定义。
其他相关资源
答案3
这是一个可以存储单元 *.service、服务部件和符号链接文件的位置(不完整列表): 如何删除 systemd 服务
还有吗:
/usr/bin/
/home/{username}/.config/
其他地方可能还残留着单元或符号链接
就我而言,按内容在文件中进行全局搜索有帮助:
grep --include=\*.service -rnw '/' -e "conten-search-template"
其中 conten-search-template 是服务可执行文件的名称或通配符。