/ usr / lib / systemd / systemと/ etc / systemd / systemの違いは何ですか?


43

すべてのユニットファイルが存在する前に、/etc/systemd/system/一部が表示されるようになりました/usr/lib/systemd/system(CentOSでは/lib/systemd/system<-、Debian / Ubuntuでは<-)、これらのフォルダーの違いは何ですか?

回答:


38

man 7 file-hierarchysystemdに付属するこの質問にはすでに回答があります(オンライン版もあります)。

        /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)。


20

バックグラウンド

マニュアルページを見る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/systemCentOS / 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/systemVirtualbox(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タイプのソフトウェアのインストールまたは自作のスクリプトが含まれます。


3
/lib/systemd/system vs. に興味があったので、このGoogleの結果をクリックするのをためらいました/usr/lib/systemd/system。この答えを見つけてうれしいです。
ブルーノブロノスキー

1
サービス定義/etc/systemd/systemをマスクすると、サービス定義を配置するとエラーが生成されますFailed to execute operation: Invalid argument。systemdは、ファイルを/ dev / nullへのシンボリックリンクに置き換えようとします。この答えが間違っていると言っていないことは、覚えておくべきことです。
Mrten

@BrunoBronosky Debianは、実際に両方を使用しています/lib/systemd/system し、 /usr/lib/systemd/systemそれゆえ、私は別に質問をし、unix.stackexchange.com/questions/550001/...
pevik
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.