Linux主机名SystemD服务文件导致NetworkManager启动失败的问题求助
Linux主机名SystemD服务文件导致NetworkManager启动失败的问题求助
各位大佬好,最近我在配置Linux主机的NIS域名服务时,自己写了个nis-domainname.service的systemd服务文件,结果重启后发现NetworkManager启动异常,查看journal日志的时候看到了这个错误:
systemd[1]: NetworkManager-wait-online.service: Job nis-domainname.service/start deleted to break ordering cycle starting with NetworkManager-wait-online.service/start
试了好几次重启NetworkManager,每次都会出现这个循环提示,导致网络有时候不能正常初始化,有没有大佬能帮忙分析下问题出在哪,怎么解决呀?
我目前的排查进展:
- 确认
nis-domainname.service的核心功能是调用domainname命令设置主机的NIS域名,服务文件的ExecStart段逻辑没问题 - 没修改过NetworkManager的默认配置,之前网络都是正常的,问题是在添加这个自定义服务后才出现的
自己摸出来的解决步骤(供大家参考):
定位依赖循环根源:先查看自定义服务的配置文件,执行命令:
cat /etc/systemd/system/nis-domainname.service发现我在[Unit]段里错误地加了
After=NetworkManager-wait-online.service——其实设置本地NIS域名根本不需要等网络完全就绪,这就导致两个服务形成了隐性的依赖循环。修改服务配置打破循环:把
After=NetworkManager-wait-online.service这一行删掉,或者替换成更宽松的依赖,比如:[Unit] Description=Set NIS Domain Name After=sysinit.target重新加载systemd配置并重启服务:
systemctl daemon-reload systemctl restart NetworkManager nis-domainname验证结果:查看日志确认错误消失:
journalctl -u NetworkManager.service -u nis-domainname.service -f
额外排查小技巧:
如果遇到类似的依赖循环问题,还可以用这两个命令快速定位:
systemd-analyze plot > boot.svg:生成启动依赖关系图,导出成svg后用浏览器打开,能直观看到循环的服务节点systemd-analyze verify /etc/systemd/system/nis-domainname.service:让systemd直接检查服务文件的依赖配置问题,会给出明确的错误提示
备注:内容来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

