我已经创建了一个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 的发行版)如果包管理器跟踪的配置文件已被本地管理员修改,则通常会生成文件,并且在这种情况下不会生成包。