![服务管理体制发生了改变。](https://linux22.com/image/871632/%E6%9C%8D%E5%8A%A1%E7%AE%A1%E7%90%86%E4%BD%93%E5%88%B6%E5%8F%91%E7%94%9F%E4%BA%86%E6%94%B9%E5%8F%98%E3%80%82.png)
我的 Ubuntu 上的无线网络有点问题,DNS 时不时会无缘无故地中断,我需要运行sudo restart network-manager
才能真正修复它。
但是我刚刚升级到 15.04,再次遇到 DNS 问题后,我尝试重新启动网络管理器 - 但是,我收到了错误
restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
我看到另一个 AskUbuntu 问题,其中说问题与 systemd 和 upstart 有关,要修复此问题,我可以重新安装 upstart。我这样做了,使用命令
sudo apt-get install upstart-sysv
然而这似乎并不能解决我无法重新启动网络管理器的问题。
我的问题有两个:如果有必要,我怎样才能回滚通过安装 upstart 对系统所做的更改,以及如何才能真正重新启动网络管理器?
或者,我愿意接受一些帮助来解决我的 DNS 错误,但从历史上看,没有人真正能够帮助我解决这个问题。
答案1
服务管理体制发生了改变。
每个系统管理工具集都有自己的实用程序。您习惯使用的实用程序是 upstart 附带的实用程序之一,它是 的一个简单的垫片initctl restart
。但这是 Ubuntu 版本 15。 您不再使用 upstart 了。
您正在使用 systemd,并且服务控制命令是 的子命令,systemctl
而不是 的子命令initctl
。因此,服务使用 启动systemctl start
,使用 停止systemctl stop
,使用 启用systemctl enable
,使用 禁用systemctl disable
,使用 查询systemctl status
,使用 重新启动systemctl restart
。
新贵已经存在。
restart
Upstart 已安装在您的系统上。否则,一开始就不会有它的程序运行,您甚至不会看到它的错误消息。它根本没有作为活动系统管理系统运行。
安装upstart-sysv
软件包就像用大锤敲核桃一样。您可以随时切换到 upstart从 GRUB 菜单。在这种情况下这样做不会让你陷入现在的困境,你现在想要切换回来。事实上,切换到 upstart 就像用大锤敲核桃一样困难,而你真正需要做的只是学习 systemd 命令,与那些并没有什么不同initctl
。
这发行说明假设安装该软件包会删除另外两个软件包。因此,很明显你需要再次安装这两个软件包。☺
killall
是另一把大锤。
顾名思义,它不会歧视,只会用特定的名字杀死一切。你不需要这个,即使有新贵systemd 和 upstart 都精确跟踪它们需要终止哪些进程才能重新启动服务,并且仅有的这些服务,因为它们首先生成了进程。如果您的系统上有哪怕还算不错的服务管理器,那么您就不应该使用killall
。只需使用服务管理工具集提供的命令即可。
类似地,sudo NetworkManager
这是另一个错误。这将在错误的执行上下文中启动 NetworkManager。再次使用服务管理工具集的命令来启动守护进程。
进一步阅读
答案2
从 15.04 开始,Ubuntu 现在使用 systemd,而不是 upstart,与现在的大多数其他发行版类似。除非您真的知道自己在做什么,否则不要安装 upstart 并运行 upstart 命令来操纵服务。如果您安装了 upstart,我建议将其卸载。
以非 root 身份重新启动网络管理器,因为它作为守护进程运行:
sudo killall NetworkManager && sudo NetworkManager
应该可以正常工作