我在 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.service
到systemd-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 主机名。