我了解systemd
不同版本的 Linux 将单元文件存储在不同位置。在 RHEL 上,它位于 . /usr/lib/systemd/system/
,而在基于 Debian 的机器上,它位于/lib/systemd/system/
.
但是,在我的 Ubuntu 18.04 机器上,我只是使用一个文件安装了 Elasticsearch ,.deb
它的systemd
单元文件安装在./usr/lib/systemd/system/
systemd
$ uname -a
Linux nucleolus 4.15.0-46-generic #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
$ sudo systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: http://www.elastic.co
注意路径是/usr/lib/systemd/system/elasticsearch.service
.
那么为什么一个systemd
单元文件/usr/lib/systemd/system/
仍然适用于 Ubuntu?Debian/Ubuntu 系统的真实单元文件加载路径是什么?
systemd
查找单元文件的路径是从中读取的,UnitPath
并且可以使用systemctl
.如您所见,这不包括
/usr/lib/systemd/system
Ubuntu 18.04 系统上的输出。是在运行时生成的UnitPath
,此处仅显示实际存在的目录。因此,创建目录就足以添加
/usr/lib/systemd/system
到UnitPath
,这很可能是通过安装 Elasticsearch 完成的。构造时考虑了哪些目录
UnitPath
可以用和pkg-config
变量查询。systemdsystemunitdir
systemdsystemunitpath
中
src/core/systemd.pc.in
如下systemdsystemunitpath
。