即使After =服务未启动,系统目标文件也会启动

问题描述 投票:-1回答:1

好的,首先,我要确保systemd服务不会被垃圾收集,如果该服务已停止且默认情况下未启用。我需要这样做是因为current problem with the node exporter 中的Prometheus用于监视。

我确实已经实现了我的目标,但是我不确定为什么它能奏效,并且可能会有副作用。

例如,我在Ubuntu 18.03上安装了ntp,禁用了该服务并停止了它。现在,我希望节点导出器向我展示ntp.service是不活动的,但ntp get的垃圾是由systemd收集的。我读到可以通过在这种情况下使用ntp作为依赖项来防止这种情况。使用Wants=没有帮助,因为如果重新启动我的从属服务,这将导致重新启动ntp。因此,我做了一些实验,并创建了一个test.target文件,如下所示:

#/etc/systemd/system/test.target
[Unit]
Description=Testing purpose
After=ntp.service

[Install]
WantedBy=Multi-user.target

我启用了该服务,并在ntp禁用并停止的情况下启动了该服务。现在这是我的实际问题。即使ntp.service没有运行,我的test.target文件也确实启用并启动没有问题。有趣的是,它也可以满足我的要求,即使被禁用并停止,ntp也不会收集垃圾。

所以我真的很想知道为什么这样做,为什么After=会被忽略?

ubuntu prometheus systemd prometheus-node-exporter
1个回答
0
投票

After=未被忽略,这导致systemd加载单元(如果尚未加载),并且还阻止了垃圾回收。After=并不意味着它将以ntp.service开头,因此您应该使用Requires=

检查Unit Garbage CollectionRequiresAfter

© www.soinside.com 2019 - 2024. All rights reserved.