すべてのユニットファイルが/etc/systemd/system/
にあった前に、一部が/usr/lib/systemd/system
(CentOSでは<-、Debian/Ubuntuでは/lib/systemd/system
<-)で表示されるようになる前に、これらの違いは何ですかフォルダ?
この質問はsystemdに付属するman 7 file-hierarchy
ですでに回答されています( オンラインバージョン もあります):
/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ページ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
]CentOS/Fedora/RHELシステムでは、どのパッケージがどのユニットファイルを/usr/lib/systemd/system
に所有しているかを次のように確認できます。
$ 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'
$
Virtualbox(vboxadd *)の場合など、/usr/lib/systemd/system
の下に時々迷子のファイルが見つかることがあることに注意してください。
$ 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タイプのソフトウェアインストールまたは自家製のスクリプトが含まれます。