回答:
man 7 file-hierarchy
systemdに付属するこの質問にはすでに回答があります(オンライン版もあります)。
/etc
System-specific configuration.
(…)
VENDOR-SUPPLIED OPERATING SYSTEM RESOURCES
/usr
Vendor-supplied operating system resources.
Usually read-only, but this is not required. Possibly
shared between multiple hosts. This directory should not
be modified by the administrator, except when installing
or removing vendor-supplied packages.
基本的に、配布リポジトリからダウンロードされたパッケージに含まれるファイルはに入り/usr/lib/systemd/
ます。システム管理者(ユーザー)が行った変更はに入り/etc/systemd/system/
ます。
システム固有のユニットは、ベンダーが提供するユニットをオーバーライドします。ドロップインを使用すると、ユニットファイルの特定の部分のみをオーバーライドし、残りはベンダーに任せることができます(ドロップインはsystemdの最初から使用可能ですが、v219でのみ適切に文書化されています。を参照してくださいman systemd.unit
)。
マニュアルページを見るman systemd.unit
と、違いを説明する表があります。これはCentOS 7.xシステムからのものです。
UNIT LOAD PATH Unit files are loaded from a set of paths determined during compilation, described in the two tables below. Unit files found in directories listed earlier override files with the same name in directories lower in the list. Table 1. Load path when running in system mode (--system). ┌────────────────────────┬─────────────────────────────┐ │Path │ Description │ ├────────────────────────┼─────────────────────────────┤ │/etc/systemd/system │ Local configuration │ ├────────────────────────┼─────────────────────────────┤ │/run/systemd/system │ Runtime units │ ├────────────────────────┼─────────────────────────────┤ │/usr/lib/systemd/system │ Units of installed packages │ └────────────────────────┴─────────────────────────────┘
彼らが「インストールされたパッケージ」と言うとき、彼らはRPM経由でインストールされたものを指しています。同じことがDebian / Ubuntuでも想定できますが、DEBファイルは「インストールされたパッケージ」になります。
注:上記のDebian / Ubuntuシステムの表はわずかに異なります。
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 │ └────────────────────┴─────────────────────────────┘
/usr/lib/systemd/system
/usr/lib/systemd/system
CentOS / Fedora / RHELシステムで、どのパッケージがどのユニットファイルを所有しているかを次のように確認できます。
$ rpm -qf /usr/lib/systemd/system/* |sort -u | head
abrt-2.1.11-50.el7.centos.x86_64
abrt-addon-ccpp-2.1.11-50.el7.centos.x86_64
abrt-addon-kerneloops-2.1.11-50.el7.centos.x86_64
abrt-addon-pstoreoops-2.1.11-50.el7.centos.x86_64
abrt-addon-vmcore-2.1.11-50.el7.centos.x86_64
abrt-addon-xorg-2.1.11-50.el7.centos.x86_64
accountsservice-0.6.45-7.el7.x86_64
acpid-2.0.19-8.el7.x86_64
alsa-utils-1.1.3-2.el7.x86_64
anaconda-core-21.48.22.134-1.el7.centos.x86_64
/etc/systemd/system
に対して同じことを行うと/etc/systemd/system
、RPMが所有するファイルが見つからないことが予想されます(実際、CentOS 7.xシステムではこれが当てはまります)。
$ rpm -qf /etc/systemd/system/* /etc/systemd/system/*/* | grep -v 'not owned'
$
/usr/lib/systemd/system
Virtualbox(vboxadd *)のように、の下に不定期のファイルが見つかる場合があることに注意してください。
$ rpm -qf /usr/lib/systemd/system/* |sort -u | grep 'not owned'
file /usr/lib/systemd/system/initrd.target.wants is not owned by any package
file /usr/lib/systemd/system/shutdown.target.wants is not owned by any package
file /usr/lib/systemd/system/vboxadd.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-service.service is not owned by any package
file /usr/lib/systemd/system/vboxadd-x11.service is not owned by any package
他にもあります。
期待されているの/usr/lib/systemd/system
は、パッケージマネージャー(YUM / DNF / RPM / APT / etc)によってそこに置かれたsystemdユニットファイルのみを含むべきディレクトリです。
/etc/systemd/system
パッケージの形式ではないアドホックソフトウェアインストールの場合、ファイルはシステムのオペレーターによってここに手動で配置されます。これには、tarballタイプのソフトウェアのインストールまたは自作のスクリプトが含まれます。
/etc/systemd/system
をマスクすると、サービス定義を配置するとエラーが生成されますFailed to execute operation: Invalid argument
。systemdは、ファイルを/ dev / nullへのシンボリックリンクに置き換えようとします。この答えが間違っていると言っていないことは、覚えておくべきことです。
/lib/systemd/system
し、 /usr/lib/systemd/system
それゆえ、私は別に質問をし、unix.stackexchange.com/questions/550001/...
/lib/systemd/system
vs. に興味があったので、このGoogleの結果をクリックするのをためらいました/usr/lib/systemd/system
。この答えを見つけてうれしいです。