私が知っている限り、systemd
さまざまなLinuxバージョンのユニットファイルは異なる場所に保存されています。 RHELではにあり、/usr/lib/systemd/system/
Debianベースのシステムではにあります/lib/systemd/system/
。
しかし、私のUbuntu 18.04システムでは、そのユニットファイルがインストールされているファイルを.deb
使用してElasticsearchをインストールしたばかりですが、それでも選択できました。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システムでのユニットファイルのロードパスは何ですか?
ベストアンサー1
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
ご覧のとおり、ここ/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
したがって、ディレクトリを作成するだけで追加することができます。/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
存在する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