2

我在 Fedora 18 上有一个 SysV 初始化脚本。Fedora 18 使用 systemd(显然,没有办法切换回 SysV)。

我的脚本需要网络准备好。目前,在脚本运行时,网络还没有准备好。如何确保我的 SysV 初始化脚本在网络启动后运行?

我的脚本的开头如下所示:

   #!/bin/bash
   #
   # chkconfig: 345 99 01
   # description: starts the xyz boot service
4

2 回答 2

1

好的,在尝试了几件事之后,我尝试添加一个 LSB 标头:

### BEGIN INIT INFO
# Required-Start: $network $local_fs $named
# Default-Start: 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: Starts/stops the foo service
# Description: Starts/stops the foo service
### END INIT INFO

这行得通!该脚本现在在网络初始化后运行。我猜这个systemd实现会读取 LSB 标头。

于 2013-04-24T19:47:57.260 回答
0

要在网络准备就绪时运行脚本,请在 systemd 服务文件的 [Unit] 部分中添加以下内容:

After=network-online.target
Wants=network-online.target

当网络管理软件认为网络已启动时,网络被定义为就绪(这通常意味着 IP 地址已配置且可路由)。对于 NetWorkManager,它会查询 dbus 以获取信息。

参考

于 2014-11-06T00:41:22.233 回答