override.conf ファイルは実際のサービス ファイル conf を変更しますか?

override.conf ファイルは実際のサービス ファイル conf を変更しますか?

override.conf私はファイルを作成し、ディレクトリsystemd-journal-catalog-update.serviceに配置しましたsystemd-journal-catalog-update.service.d/。目的は、systemd-tmpfiles-setup.servicesystemd-journal-catalog-update.service file.

ファイルには、現在次の内容が含まれています:

[Unit]
After=local-fs.target systemd-tmpfiles-setup.service

私のoverride.confファイルには次の内容が含まれています:

[Unit]
After=
After=local-fs.target

しかし、systemd-journal-catalog-update.serviceファイルは変更されていないようです。ファイルのoverride.conf動作を誤解していますか? 元のサービス ファイルを手動で変更できることはわかっていますが、プロジェクトの状況により、このオプションは制限されています。皆さんから提供していただける支援やアドバイスをいただければ幸いです。

答え1

あなたが望むこと(ドロップインファイルを介してユニットから依存関係を削除すること)は、システムユニットマニュアルページ:

依存関係 (After= など) は空のリストにリセットできないため、依存関係はドロップインでのみ追加できます。依存関係を削除する場合は、ユニット全体をオーバーライドする必要があります。

ユニット ファイル全体を上書きするには、マニュアル ページの例 2 に従います。

ユニット ファイルでベンダー設定を上書きする方法は 2 つあります。ユニット ファイルを /usr/lib/systemd/system から /etc/systemd/system にコピーし、選択した設定を変更する方法です。[...] 最初の方法の利点は、ユニット全体を簡単に上書きできることです。ベンダー ユニットはまったく解析されなくなります。欠点は、ベンダーによるユニット ファイルの改善が更新時に自動的に組み込まれないことです。

あなたの場合は、(ルートとして)

  • cp /usr/lib/systemd/system/systemd-journal-catalog-update.service /etc/systemd/system
  • systemctl daemon-reload
  • systemctl restart systemd-journal-catalog-update

その後、systemctl status次のサービス ファイルを参照します/etc

# systemctl status systemd-journal-catalog-update
● systemd-journal-catalog-update.service - Rebuild Journal Catalog
     Loaded: loaded (/etc/systemd/system/systemd-journal-catalog-update.service; static)
     Active: active (exited) since Sat 2021-05-22 16:27:07 CEST; 3 weeks 2 days ago
[...]

前述のsystemctl catファイルは次の場所にも表示されません/etc/:

# systemctl cat systemd-journal-catalog-update
# /etc/systemd/system/systemd-journal-catalog-update.service
#  SPDX-License-Identifier: LGPL-2.1-or-later
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Rebuild Journal Catalog
[...]

/etcこれで、必要に応じてファイルを編集し、systemctl daemon-reload再度実行して、systemctl restart systemd-journal-catalog-updateカスタム ユニット ファイルとその設定を使用してサービスを実行できます。

マニュアルページに記載されている次の点に注意してください。

ベンダーによるユニット ファイルの改善がアップデートに自動的に反映されないという欠点があります。

systemd は、ディストリビューションの systemd パッケージにあるものとはまったく異なるユニット ファイルを読み取るようになったため、ファイルからの更新を/usr/lib自分のコピーに手動で適用する必要があります。.rpmnew(RPM ベースのディストリビューションの場合) または.pacnew(pacman ベースのディストリビューションの場合) パッケージ マネージャーによって追跡される構成ファイルがローカル管理者とパッケージの両方によって変更された場合に通常生成されるファイルは、この場合は生成されません。

関連情報