最安全推荐的做法是用 systemctl cat 查看配置、systemctl edit 创建 drop-in 覆盖:它不修改原始文件(如 /usr/lib/systemd/system/nginx.service),避免升级覆盖,且优先级最高;drop-in 文件存于 /etc/systemd/system/nginx.service.d/override.conf,支持增量配置合并与审计。

直接用 systemctl cat 查看配置,再用 systemctl edit 覆盖,是最安全、推荐的做法。不需要动原始文件,也不会被系统升级覆盖。
查看第三方服务的当前生效配置
运行命令:
systemctl cat nginx
它会输出该服务所有生效的配置来源,包括:
- 主 unit 文件(通常来自
/usr/lib/systemd/system/nginx.service) - 所有已加载的 drop-in 片段(如
/etc/systemd/system/nginx.service.d/override.conf)
注意观察输出中是否包含 [Unit]、[Service] 等节,以及是否有你关心的字段(比如 Wants=network.target 或 Environment=)。
用 systemctl edit 创建覆盖配置
执行:
sudo systemctl edit nginx
编辑器会打开一个空的 override.conf 文件(路径为 /etc/systemd/system/nginx.service.d/override.conf)。在这里写入你想修改或新增的内容,例如:
[Unit] Wants=network.target After=network.target [Service] Environment="NGINX_ENV=prod" Restart=always
保存退出后,systemd 会自动合并这个片段到原始配置中,且优先级高于原文件。
验证覆盖是否生效
先重载配置:
sudo systemctl daemon-reload
再重新查看:
systemctl cat nginx
确认你的修改已出现在输出末尾(drop-in 部分)。还可检查依赖关系:
systemctl list-dependencies nginx --all
或查看服务状态日志确认行为是否按预期变化:
sudo journalctl -u nginx --since "1 hour ago" -n 20
不建议直接改原始 unit 文件
第三方软件(如 Nginx、Tomcat)的默认 unit 通常放在 /usr/lib/systemd/system/ 或 /lib/systemd/system/。这些文件属于软件包管理范围,升级时可能被覆盖。手动修改它们容易导致配置丢失或冲突。用 systemctl edit 生成的 drop-in 文件存于 /etc/systemd/system/<unit>.d/,是 systemd 明确支持的覆盖机制,升级安全、可审计、易清理。


















