Answers:
从systemd 219开始,您可以systemd-networkd-wait-online
直接使用systemd的工具,并使用一个--interface
参数来指定要等待的接口。例如:
ExecStartPre=/usr/lib/systemd/systemd-networkd-wait-online --interface=$IFACE
但是,有一个警告。systemd-networkd
即使此工具在您的配置中没有执行任何操作,也需要运行它。另一方面,从相同的systemd 219开始,systemd-networkd
是套接字可激活的,并在空闲时自动退出。因此,您所需要的只是拉入其插槽。
综上所述,对单位文件的修改将如下所示(用$IFACE
所需的接口替换):
[Unit]
Requires=systemd-networkd.socket
After=systemd-networkd.socket
...
[Service]
ExecStartPre=/usr/lib/systemd/systemd-networkd-wait-online --interface=$IFACE
ExecStart=/usr/bin/hostapd ...
...
perl -e 'sleep 1 until -e "/sys/class/net/myinterface"'
在你的ExecStartPre