如果另一个 systemd 服务重新启动,systemd 服务如何重新启动?

如果另一个 systemd 服务重新启动,systemd 服务如何重新启动?

我在 Debian 上有 systemd 252。我希望 systemd 服务systemd-hostnamed.service重新启动或开始重新启动我的b.service.

b.service我使用以下选项时没有运气。

After=systemd-hostnamed.service
Requires=systemd-hostnamed.service
BindsTo=systemd-hostnamed.service
PartOf=systemd-hostnamed.service

我怎样才能做到这一点?

b.服务

[Unit]
Description=Avoid NetworkManager sending hostname in DHCP request
Wants=network-pre.target
Before=network-pre.target

[Service]
StartLimitBurst=5
StartLimitInterval=80
RestartSec=15
User=root
ExecStart=/usr/bin/python3 /usr/local/bin/hostname.py

[Install]
WantedBy=sysinit.target

答案1

b.service需要两个关系systemd-hostnamed.service

  • PartOf=systemd-hostnamed.service停止时会导致b.service停止。systemd-hostnamed.service
  • WantedBy=systemd-hostnamed.service将导致在启动b.service时启动。systemd-hostnamed.service

这两者都用于重置。

添加PartOf=关系是微不足道的。只需将该行添加到您的[Unit]部分即可。

[Unit]
PartOf=systemd-hostnamed.service

WantedBy=只能在该[Install]部分中定义,但您已经有了WantedBy=sysinit.target.如果您希望systemd-hostnamed.service从 开始sysinit,那么您可以更改此行。然后sudo systemctl {disable,enable} b.service

[Install]
# WantedBy=sysinit.target
WantedBy=systemd-hostnamed.service

如果您想保持b.service[Install]部分不变,那么等效的选项是添加Wants=b.servicesystemd-hostnamed.service.这是通过覆盖完成的。使用sudo systemctl edit systemd-hostnamed.service并将其设置为以下内容并保存:

$ sudo systemctl edit systemd-hostnamed.service

[Unit]
Wants=b.service

这将创建/etc/systemd/system/systemd-hostnamed.service.d/override.conf添加关系,而systemd-hostnamed.service不会污染 部署的原始文件systemd

答案2

错误层。

[ipv4]
dhcp-send-hostname=false

在 /etc/NetworkManager/system-connections/ 上的配置文件中将阻止网络管理器发送 dhcp 主机名。

相关内容