无法连接到Upstart:连接被拒绝

刚刚通过do-release-upgrade进行了更新,现在某些upstart任务(如fail2ban和plexmediaserver)无法启动(已尝试重新安装)。
$ sudo service fail2ban start
Job for fail2ban.service failed. See "systemctl status fail2ban.service" and "journalctl -xe" for details.

$ systemctl status fail2ban.service
  fail2ban.service - Fail2Ban Service
   Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
   Active: failed (Result: start-limit) since Mon 2015-04-27 19:47:27 BST; 26s ago
     Docs: man:fail2ban(1)
  Process: 14423 ExecStart=/usr/bin/fail2ban-client -x start (code=exited, status=255)

$ sudo service plexmediaserver start
Failed to start plexmediaserver.service: Unit plexmediaserver.service failed to load: No such file or directory.

$ sudo dpkg -i plexmediaserver_0.9.11.16.958-80f1748_amd64.deb
(Reading database ... 88738 files and directories currently installed.)
Preparing to unpack plexmediaserver_0.9.11.16.958-80f1748_amd64.deb ...
stop: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused

有什么想法从哪里开始?

你能把/lib/systemd/system/fail2ban.service的内容添加到你的帖子中吗?failed (Result: start-limit)表示该服务不断失败并尝试重新启动,而systemd限制了它在给定时间段内启动的次数。还想知道这个错误报告是否相关。 - TheSchwa
无法连接到Upstart:(https://askubuntu.com/q/719228/582516)可能会有所帮助 - LF00
5个回答

Ubuntu在15.04版本中开始使用systemd作为其服务框架,包括桌面版和服务器版。建议的做法是将您的upstart任务更改为systemd任务(有关更多信息,请参阅维基文章)。如果您愿意,您也可以切换回upstart,这当然是更快的解决方法。我建议您阅读维基文章的前几节来权衡利弊。
推荐修复方法
请参考维基文章将您的upstart脚本转换为systemd。
讨论和编码指南:Systemd For Upstart Users 快速修复方法(仅适用于15.04)
要永久切换回upstart,只需运行以下命令:
sudo apt-get install upstart-sysv
sudo update-initramfs -u
sudo reboot

编辑:维基百科文章只推荐在15.04版本上使用此方法,但一些用户发现在16.04版本上也很有帮助。

1当然,systemd只是在新安装的系统上才是默认选项,而不是从14.10版本升级的系统。 - Jos
1仔细观察您发布的输出,该作业显然正在尝试使用 systemd 而不是 upstart。请注意,多次提到了 systemctl,它是与 systemd 的命令行界面相关的命令。此外,“Failed to connect to socket” 错误提示表明根本没有运行 upstart。看起来 fail2ban 正在尝试使用 systemd,但脚本有一个错误,而 plexmediaserver 正试图使用已不再存在的 upstart - TheSchwa
请参考http://askubuntu.com/questions/600026/problems-starting-plexmediaserver-on-kubuntu-15-04,了解有关在Kubuntu 15.04上启动plexmediaserver的问题。 - TheSchwa
3Upstart现在已经停止了吗?我只是喜欢它创建新服务的简便性。 - Kapé
@Kape 是的,它正在被systemd取代。然而,我相信几乎所有的upstart任务都将向后兼容,以在过渡过程中尽量减少对最终用户的影响。 - BobTuckerman
7快速修复搞砸了我的Ubuntu安装(16.04)。 我不得不进入恢复模式,使用root提示符,并键入:apt-get remove upstart-sysvupdate-initramfs -u才能使一切重新正常运作。 - JqueryToAddNumbers
@ExceptionSlayer 很抱歉听到这个消息:( 我在答案中添加了一个关于版本的注释,因为根据维基百科上的说法,“如果你正在运行Ubuntu vivid (15.04),你可以随意切换upstart和systemd,因为目前两个软件包都已安装。” - TheSchwa
1那也发生在我身上,@ExceptionSlayer。谢谢你的指示。 - Robin Zimmermann
谢谢 @ExceptionSlayer 的评论和拯救我的系统。这个快速修复也把我 Ubuntu 安装(16.04)搞砸了。 - Greg G

我发现 fail2ban 的问题是配置文件中的错误: /etc/fail2ban/jail.local
在 pam 部分,端口变量被列了两次。
[pam-generic]

...

port     = all
banaction = iptables-allports
port     = anyport

尽管在我的配置中禁用了这个部分(enabled = false),但这会导致错误。我只是简单地注释掉了这个第二个定义。
# port     = anyport

我通过手动运行fail2ban找到了这个。
sudo fail2ban-client start

我也收到了。我猜版本之间的示例配置是不兼容的。 - Ashley

这是解决方案。一切都与最近的VirtualBox更新有关。
在终端中运行(如果您从恢复模式访问,请按Ctrl+Alt+F1):
sudo apt-get purge virtualbox-guest-x11

在我的情况下,当Ubuntu版本升级时,我们只是以新的Ubuntu版本运行命令的方式不同:
新的有效命令:
 sudo service ssh restart

要检查TCP是否在端口22上监听,您应该从以下命令中获得一些输出:

sudo netstat -anp | grep sshd

要检查SSH是否正在运行:

  1. eval ssh-agent
  2. ps -aux | grep ssh

注意:我们假设所需的SSH密钥已加载到发起SSH的主机的SSH代理中,并且该密钥也已添加到进行SSH的主机的.ssh/authorized_keys文件中。


我在升级一个Linux虚拟机(VirtualBox)后遇到了这个问题。
原来我必须以root身份在伪终端中运行VBoxLinuxAdditions.run并重新启动才能解决这个问题。
顺便说一下,如果有人遇到同样的问题,可以参考一下。
David