systemd:在启动时是创buildnetworking接口设备

我正在尝试为CentOS 7 netboot映像创build自定义networkingpipe理服务。 该服务获取主机上所有接口的列表,find具有物理连接的接口,然后使用它来获取DHCPconfiguration。

问题是要确保它在系统中存在所有networking设备之后启动,因此可以获取它们的列表。 这是我的单元文件:

 [Unit] Description=Configure networking Wants=network.target After=network-pre.target Before=network.target multi-user.target [Service] ExecStart=/usr/local/bin/netboot-cfg Type=oneshot RemainAfterExit=yes [Install] WantedBy=multi-user.target 

正如您所看到的,它在network-pre目标之后, network目标之前运行。 我用systemd-analyze plot证实了这一点。 但是,在启动过程中,无法在系统中find任何接口。 该列表是通过查看/sys/class/net目录创build的。 sys-subsystem-net-devices-<iface>.device单元稍后启动,我猜测它是填充该目录的。

networking设备单元在network.target之后启动似乎很奇怪。

所以问题是:如何使用systemd单元文件语法可靠地确定所有接口何时可用?

networking设备单元在network.target之后启动似乎很奇怪。

所以问题是:如何使用systemd单元文件语法可靠地确定所有接口何时可用?

这个问题的一部分由这个Unix SE线程回答。

基本上,根据network.target的文档 :

  • network.target只保证networking堆栈启动:

    仅表示networkingpipe理堆栈到达后才启动。 到达时是否configuration了任何networking接口都是未定义的。

  • network-online.target

    是一个目标,积极等待,直到nework“上”,其中“up”的定义是由networkingpipe理软件定义的。 通常它指示某种configuration的,可路由的IP地址。

所以你可能需要调整你的需求来反映这一点:我想你可能想运行你的脚本After=network.target ,但是Before=network-online.target