
我已經創建了一個override.conf
文件systemd-journal-catalog-update.service
並將其放置在systemd-journal-catalog-update.service.d/
目錄中。其目的是systemd-tmpfiles-setup.service
從systemd-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= 等)無法重設為空列表,因此只能在 drop-ins 中新增依賴項。如果要刪除依賴項,則必須覆蓋整個單元。
可以透過遵循手冊頁中的範例二來覆蓋整個單元檔案:
有兩種方法可以覆蓋單元檔案中的供應商設定:將單元檔案從 /usr/lib/systemd/system 複製到 /etc/systemd/system 並修改所選設定。 [...]第一種方法的優點是可以輕鬆覆蓋整個單元,不再解析供應商單元。它的缺點是供應商對單元文件的改進不會自動合併到更新中。
就您而言,您必須(作為 root)
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 的發行版)如果套件管理器追蹤的設定檔已被本機管理員修改,則通常會產生文件,並且在這種情況下不會產生套件。