day*_*oli 3 ubuntu debian systemd elasticsearch systemd-unit
我知道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
Run Code Online (Sandbox Code Playgroud)
注意路径是/usr/lib/systemd/system/elasticsearch.service
.
那么为什么systemd
单元文件 at/usr/lib/systemd/system/
仍然适用于 Ubuntu?Debian/Ubuntu 系统的真实单元文件加载路径是什么?
systemd
查找单元文件的路径是从中读取的,UnitPath
并且可以使用systemctl
.
# systemctl --no-pager --property=UnitPath show | tr ' ' '\n'
UnitPath=/etc/systemd/system.control
/run/systemd/system.control
/run/systemd/transient
/etc/systemd/system
/run/systemd/system
/run/systemd/generator
/lib/systemd/system
/run/systemd/generator.late
Run Code Online (Sandbox Code Playgroud)
如您所见,这不包括/usr/lib/systemd/system
,它是 Ubuntu 18.04 系统上的输出。该UnitPath
期间实际存在这里显示运行时,只有目录中生成。
# mkdir -p /usr/lib/systemd/system
# systemctl daemon-reload
# systemctl --no-pager --property=UnitPath show | tr ' ' '\n' | grep "/usr/lib/systemd/system"
/usr/lib/systemd/system
Run Code Online (Sandbox Code Playgroud)
因此,创建目录足以添加/usr/lib/systemd/system
到UnitPath
,这可能是通过安装 Elasticsearch 来完成的。
UnitPath
可以使用pkg-config
变量systemdsystemunitdir
和查询构建时考虑哪些目录systemdsystemunitpath
。
# pkg-config systemd --variable=systemdsystemunitdir
/lib/systemd/system
# pkg-config systemd --variable=systemdsystemunitpath | tr ':' '\n'
/etc/systemd/system
/etc/systemd/system
/run/systemd/system
/usr/local/lib/systemd/system
/lib/systemd/system
/usr/lib/systemd/system
/lib/systemd/system
Run Code Online (Sandbox Code Playgroud)
在src/core/systemd.pc.in
该systemdsystemunitpath
如下。
systemdsystemunitpath=${systemdsystemconfdir}:/etc/systemd/system:/run/systemd/system:/usr/local/lib/systemd/system:${systemdsystemunitdir}:/usr/lib/systemd/system:/lib/systemd/system
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1248 次 |
最近记录: |