如何获取 system.d 服务启动依赖项以使 network.target 表现得像 network-online.target?

如何获取 system.d 服务启动依赖项以使 network.target 表现得像 network-online.target?

我正在运行 CentOS8 (8.1.1911) 最小安装,以便运行 Web 服务器。

一些服务,/etc/systemd/system/multi-user.target.wants/例如

  • httpd.service

  • mariadb.service

  • named.service

  • squid.service

  • sshd.service

  • postfix.service

After=network.target且无network-online.target

这是一个问题,因为在系统启动时,这些服务在网络准备就绪之前启动,并且无法绑定到任何侦听端口。幸运的是,一对夫妇喜欢sshd不断重试绑定,一旦网络上线,他们就成功了。在最终成功之前,您可以看到/var/log/messages失败的绑定尝试。然而,并非所有服务都会重试,并且在第一次失败后仍然处于死亡状态。

我知道一种解决方案是使用ie run为每个服务添加自定义参数Wants/Aftersystemctl

systemctl edit httpd

并添加

[Unit]
Wants=network-online.target
After=network-online.target

这是可行的,服务现在将等待网络上线并成功绑定并在重新启动时启动。

现在我的问题。

我不想手动编辑要添加的每个服务,network-online.target因为这会造成维护麻烦,并且有可能在将来安装的新服务上忘记此步骤。我想要的是一种设置策略或在系统范围内进行更改的方法,任何带有Wants/ Afterfor 的服务network.target都会表现得好像正在等待network-online.target.

  • NetworkManager既然还要等待,这会产生问题network.target吗?可以NetworkManager改为等待其他事情吗?
  • network.target如果全部等待,还有其他可能会中断的服务network-online.target吗?
  • 还有其他创意解决方案吗?

相关内容