在 Ubuntu 服务器上精确识别「用户自己安装的 systemd 服务」
在运维 Linux 服务器时,经常会遇到这样的问题:系统里注册了大量 systemd 服务,但其中绝大多数属于操作系统自带组件,而真正由管理员后期安装、配置过的服务却被淹没在其中。如果无法区分这两类服务,就很难判断哪些服务是业务依赖,哪些是历史遗留或冗余组件。 本文以一台 Ubuntu 服务器为例,系统性地展示如何识别「用户自行安装的服务」,包括正在运行和已经停用但仍然存在的部分。 一、为什么 running 列表不够用 很多人会使用: 来查看系统当前运行的服务。这个命令只能回答一个问题: “现在有哪些服务在跑?” 但它完全无法反映以下信息: 因此,仅依赖 running 视图会得出错误结论,例如误以为系统“只有 Apache 和 MySQL”。 二、真正的总清单:所有已注册的服务 systemd 中,所有服务的定义都存放在 unit files 中,可以通过: 获得完整列表。这个列表显示: 在示例服务器中,共列出了 249 个 unit 文件。 但其中绝大多数是 Linux 与 Ubuntu 自带组件(systemd、udev、networkd、fsck、plymouth 等),需要进一步过滤。 三、用服务内容反推系统画像 通过分析 unit 文件,可以反推出这台服务器的历史和用途: 1. Web 与数据库业务 这是一套典型的 LAMP Web 服务器栈。 …