我知道有人问过在 14.04 中重启网络时遇到的问题。但是我想知道是否有人能更直接地回答为什么我们不能使用该service
命令重启网络服务。
或者为什么service networking restart
现在已经被手动ifdown/ifup
命令取代了?
前任。
ifdown eth0 && ifup eth0
答案1
networking
根本就不是用来在 Ubuntu 上重启或停止的。该功能根本就不受支持(并且无法支持正如豪尔赫·卡斯特罗所说)。还有很多其他服务依赖于它。/ifup
命令ifdown
没有代替 service networking restart
,因为它始终可用。布莱恩·冈萨雷斯很好地解释了这一点:
Upstart 旨在完全替代 Sysvinit。为了向后兼容,Upstart 开发人员做出了一些让步,以便仍在使用 sysvinit 样式 init 脚本的人员/程序包可以继续使用。/etc/init.d/networking init 脚本是为 sysvinit 编写的,调用它会使用 sysvinit 方法并破坏为 Upstart 编写的 dbus。
解决方案是让网络初始化脚本的维护者修复/重写它,使其与 Upstart 兼容。这可能意味着网络初始化脚本将失去与 sysvinit 的兼容性,但他们需要克服它。Sysvinit 已被弃用/过时,当未来是 Upstart 时,维护它就会浪费太多精力。
和稍后的:
问题在于我们有一种经过多年尝试和测试的方法来执行这项任务。
和然后:
这是一个遗留的弃用功能,虽然“每个人都知道不要使用它”,但如果使用就会造成损害。正如您所言,此功能不再有任何实际用途,因此需要删除。
有一个重大错误,导致大部分 GUI 堆栈崩溃,这已修复。
总结一下:
- 如果您使用的是 GUI,那么您根本无需接触
networking
,因为network-manager
一旦启动接口,它就会处理这些接口。(即使这样,您也不需要重新启动它。) - 如果您使用 CLI,
ifup
/ifdown
命令已经提供了该功能。