用户自定义的 systemd unit 文件应该放在哪里?

/usr/lib/systemd/system/ 和 /etc/systemd/system/ 都是存放 systemd unit 文件的地方,但它们之间存在重要的区别。理解这些区别对于管理和配置你的系统至关重要。


/usr/lib/systemd/system/ vs /etc/systemd/system/

特性 /usr/lib/systemd/system/ /etc/systemd/system/
用途 存放发行版(distribution)提供的默认 unit 文件。 存放系统管理员(system administrator)或用户自定义的 unit 文件。
所有者 属于操作系统或软件包管理器(如 dnf, apt 等)管理。 属于系统管理员手动创建和管理。
更新 当你更新软件包时,这个目录下的文件可能会被覆盖。 这个目录下的文件不会被系统更新覆盖。
优先级 优先级较低。 优先级较高 。如果 /etc/systemd/system/ 中存在与 /usr/lib/systemd/system/ 同名的文件,systemd 会优先使用 /etc/systemd/system/ 中的文件。
可修改性 不建议手动修改。任何修改都可能在系统更新后丢失。 可以自由创建、修改和删除。
示例 系统服务,如 sshd.service, dbus.service 等。 用户自定义的服务,如你自己的 Web 应用服务、数据库服务等。

简单来说,/usr/lib/systemd/system/ 是系统的默认配置 ,由操作系统维护,你不应该去修改它。而 /etc/systemd/system/ 则是自定义配置 ,用于覆盖或扩展默认配置。这种设计遵循了**配置分层(configuration layering)**的原则,确保系统配置的稳定性和可维护性。


用户自定义的 systemd unit 文件应该放在哪里?

用户自定义的 systemd unit 文件(包括你自己的服务、定时任务等)应该放在 /etc/systemd/system/ 目录下。

这样做有以下几个主要好处:

  1. 优先级保证:确保你的自定义服务配置能够覆盖或补充系统默认的服务。
  2. 防止更新覆盖:避免在系统更新或软件包升级时丢失你辛辛苦苦编写的 unit 文件。
  3. 清晰的管理:将你的个人或项目配置与系统默认配置分开,使管理更加清晰和安全。

如果你需要修改一个已有的系统服务(例如 sshd.service),但又不想直接修改 /usr/lib/systemd/system/sshd.service,你可以:

  • 在 /etc/systemd/system/ 中创建一个同名的文件,例如 /etc/systemd/system/sshd.service,来覆盖原始文件。
  • 更推荐的方式是创建drop-in 目录 ,例如 /etc/systemd/system/sshd.service.d/,并在其中创建以 .conf 结尾的配置文件(例如 override.conf)。这种方法允许你只修改需要变更的配置项,而不是整个 unit 文件,从而使配置管理更加精细和模块化。

总而言之,记住 "/etc 优先于 /usr/lib" 的原则,并始终将你的自定义配置放在 /etc/systemd/system/ 及其子目录中。

相关推荐
LongRunning13 小时前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
民乐团扒谱机17 小时前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
물の韜17 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
qq_3718021117 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
无足鸟ICT17 小时前
【RHCA+】iptraf-ng(网络监控分析)
linux·网络
独隅18 小时前
WebStorm 在 Linux 环境下的实战安装与高效开发指南
linux·ide·webstorm
坤坤子吖19 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
阡陌数智20 小时前
Claude API新版本重大变更与安全升级指南
java·linux·安全
奶茶树20 小时前
【Linux】环境开发工具(vim,gcc,g++,Makefile)
linux·运维·vim
木子欢儿1 天前
国内 macOS/Linux 安装 rust
linux·运维·服务器·macos·rust