Ubuntu/Debian 的 nginx.service 由发行版提供,位于 /lib/systemd/system/nginx.service;/etc/systemd/system/ 仅用于用户覆盖。验证用 systemctl show --property=FragmentPath nginx.service,修改应通过 systemctl edit nginx 或 override.conf 实现。

Ubuntu/Debian 系统通过 apt install nginx 安装后,Nginx 的 systemd 服务单元文件(service file)**不由 Nginx 官方提供,而是由发行版的打包维护者生成并随包安装**,其路径固定为:
/lib/systemd/system/nginx.service
这是标准位置,也是 systemd 实际加载和运行时使用的原始单元文件。
为什么不是 /etc/systemd/system/nginx.service?
/etc/systemd/system/ 是用户自定义或覆盖服务行为的目录(例如通过 systemctl edit nginx 创建的 drop-in 文件或重写后的 service 文件)。默认情况下,该目录下 没有 nginx.service 文件——只有当你手动创建、链接或执行覆盖操作时才会出现。
如何验证实际加载的是哪个文件?
运行以下命令可确认当前生效的完整单元路径:
-
systemctl show --property=FragmentPath nginx.service→ 显示真实路径(通常是/lib/systemd/system/nginx.service) -
systemctl cat nginx.service→ 直接输出当前生效的完整 unit 内容 -
systemctl status nginx→ 在输出顶部也会显示 “Loaded: … from …” 行
修改服务行为的推荐方式
不建议直接编辑 /lib/systemd/system/nginx.service(下次 apt 升级可能被覆盖),应使用 systemd 推荐的覆盖机制:
- 运行
sudo systemctl edit nginx:自动创建/etc/systemd/system/nginx.service.d/override.conf,在此添加或修改配置项(如ExecStartPre、RestartSec等) - 若需完全重写,可复制原文件到
/etc/systemd/system/nginx.service,再编辑,之后执行sudo systemctl daemon-reload - 所有修改后必须执行
sudo systemctl daemon-reload才会生效










