Linux systemd/system 目录详解

现今多数Linux系统服务都使用了Systemd来管理, 在平常使用或看技术文章时,常看到以下四个system目录:

/lib/systemd/system
/usr/lib/systemd/system
/run/systemd/system
/etc/systemd/system

这四个目录有什么区别呢?

首先, /lib/systemd/system 和 /usr/lib/systemd/system 是同一个目录。

通过下面命令可以看到 /lib 目录指向了 /usr/lib。

rt@rangotec.com:~$ ll /lib
lrwxrwxrwx 1 root root 7 Sep 20  2022 /lib -> usr/lib

目录作用:

1. 目录: /usr/lib/systemd/system  (/lib/systemd/system)

该目录是软件安装包安装的目录,也就是通过apt、rpm等软件管理命令管理的systemd单元文件,都放置在该目录下。

2. 目录: /run/systemd/system

软件运行时动态生成的配置文件,一般很少修改,除非是修改程序运行时的一些参数时,即 Session 级别的,才在这里做修改。

3. 目录: /etc/systemd/system

系统管理员安装的本地unit,也就是如果需要添加自己的unit可以再次创建对应的unit文件。

但实际上这个目录下大部分都是符号链接,指向 /usr/lib/systemd/system 。

如运行systemctl enable 就会在上面两个目录之间建立符号链接。

rt@rangotec.com:~$ sudo systemctl enable redis-server.service
// ... 其他略...
Created symlink /etc/systemd/system/redis.service → /lib/systemd/system/redis-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/redis-server.service → /lib/systemd/system/redis-server.service.

可以看到,程序自动创建了一个符号链接,从 etc目录 指向了 lib 目录:

 /etc/systemd/system/redis.service -> /lib/systemd/system/redis-server.service
优先级:

Table 1.  Load path when running in system mode (--system).
┌────────────────────────┬─────────────────────────────┐
│Path                    │ Description                 │
├────────────────────────┼─────────────────────────────┤
│/etc/systemd/system     │ Local configuration         │
├────────────────────────┼─────────────────────────────┤
│/run/systemd/system     │ Runtime units               │
├────────────────────────┼─────────────────────────────┤
│/lib/systemd/system     │ Units of installed packages │
└────────────────────────┴─────────────────────────────┘

上面三个目录的配置文件的优先级依次从高到底, 如果三个目录都配置了同一个文件, 优先级高的覆盖优先级低的。即:本地配置文件优先级最高。

当安装软件时,如nginx时,系统默认将unit文件放到 /lib/system/system下。 如果我们需要修改nginx的unit文件, 一般有两种办法:

a. 在/etc/systemd/system目录下创建nginx.service文件,里面写上我们自己的配置。
b. 在/etc/systemd/system下面创建nginx.service.d目录,在这个目录里面新建任何以.conf 结尾的文件,然后写入我们自己的配置。

/run/systemd/system 目录通常是进程运行时动态创建 unit 文件的目录,一般很少需要修改。

 

 作者:千古八方的玩具 https://www.bilibili.com/read/cv39859478/?jump_opus=1 出处:bilibili

评论列表: