首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >initctl:无法连接到Upstart

initctl:无法连接到Upstart
EN

Unix & Linux用户
提问于 2018-03-08 14:10:49
回答 1查看 6.6K关注 0票数 2

我最近将我的服务器从UbuntuV14.04升级到了V16.04,现在systemctl似乎不再工作了。

我需要阻止传输守护进程在引导时自动启动,所以我发出命令。

代码语言:javascript
复制
sudo systemctl disable transmission-daemon.service

我得到了以下回应

代码语言:javascript
复制
Synchronizing state of transmission-daemon.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install disable transmission-daemon
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
The script you are attempting to invoke has been converted to an Upstart job, but lsb-header is not supported for Upstart jobs.
insserv: warning: script 'screen-cleanup' missing LSB tags and overrides
insserv: Default-Start undefined, assuming empty start runlevel(s) for script `screen-cleanup'
insserv: Default-Stop  undefined, assuming empty stop  runlevel(s) for script `screen-cleanup'
insserv: warning: current start runlevel(s) (empty) of script `transmission-daemon' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `transmission-daemon' overrides LSB defaults (0 1 6).
initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused

服务不会被禁用。

更新每个@JdeBP删除屏幕清理脚本解决了这个问题

代码语言:javascript
复制
$ sudo rm /etc/init.d/screen-cleanup
$ sudo systemctl disable transmission-daemon.service

Synchronizing state of transmission-daemon.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install disable transmission-daemon
insserv: warning: current start runlevel(s) (empty) of script `transmission-daemon' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `transmission-daemon' overrides LSB defaults (0 1 6).
insserv: warning: current start runlevel(s) (empty) of script `transmission-daemon' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `transmission-daemon' overrides LSB defaults (0 1 6).

我可以看到该服务现在已按需要禁用<#>

代码语言:javascript
复制
systemctl status transmission-daemon
● transmission-daemon.service - Transmission BitTorrent Daemon
   Loaded: loaded (/lib/systemd/system/transmission-daemon.service; disabled; ve
  Drop-In: /etc/systemd/system/transmission-daemon.service.d
           └─local.conf
   Active: active (running) since Thu 2018-03-08 08:16:00 EST; 2 days ago
 Main PID: 2423 (transmission-da)
   Status: "Uploading 329.89 KBps, Downloading 11.04 KBps."
   CGroup: /system.slice/transmission-daemon.service
           └─2423 /usr/bin/transmission-daemon -f --log-error -g /etc/transmissi
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-03-08 22:51:58

/lib/systemd/systemd-sysv-install是一个钩子,其任务是执行systemd-sysv-generator和其他服务管理系统将识别的非本地启用/禁用操作。Ubuntu的/lib/systemd/systemd-sysv-install只是简单地调用Ubuntu的/usr/sbin/update-rc.d。这反过来又叫/sbin/insserv。这反过来又会看到/etc/init.d中有一个van脚本,并试图从其中获取LSB头信息。

/sbin/insserv有一个特例,当它发现的van rc脚本实际上是一个指向Upstart的/lib/init/upstart-job程序的符号链接时,它就会识别它。因为这是一个通用程序,可以填充很多van rc脚本,所以它不会有适合特定服务的LSB头信息。因此,/sbin/insserv试图使用lsb-header子命令调用rc脚本,实际上是/lib/init/upstart-job,以使其计算并打印服务的正确LSB头。

但是/lib/init/upstart-job实际上不支持这个子命令。这些软件从来没有正确地集成过。/lib/init/upstart-job运行initctl,它试图连接到运行中的Upstart服务管理器,当然会失败(因为其中一个没有运行),并打印您看到的关于无法连接到套接字/com/ubuntu/upstart的第一个错误,然后打印您看到的关于lsb-header子命令不受“Upstart作业”支持的第二个错误(尽管这就是它的目的)。

结果是这一切都出了问题。

它已经出了问题好几年了。人们可以找到报告这个bug的人,当然,当人们直接或间接地在Upstart和van Smoorenburg init下运行D21时,这种情况就发生了,这一点可以追溯到十多年前。2016年年,它在AskUbuntu上被问及。是几个Launchpad的bug,比如2016年这个从年开始

有趣的是,在2010年的一个Launchpad bug中,有人试图提供补丁以便upstart-job会明白lsb-header子命令insserv至少提供了一些可以使用的东西,即使它相当缺乏信息。除了一些无法自行修复软件的用户之外,没有人注意到。

当然,这些van rc脚本是Upstart的包装器,目的是为了软件和那些不知道如何使用initctl直接驱动Upstart,但知道如何驱动旧的van rc脚本的人。但是,您使用的是Ubuntu 16;一个systemd操作系统。systemd的向后兼容性机制采用了一些van rc脚本,这些脚本本身就是其他的向后兼容机制,将它们封装在systemd本机单元中,最后试图将发送给systemd服务管理器的命令反映到没有的Upstart服务管理器中。

这太可笑了。

  1. /etc/init.d中找到指向/lib/init/upstart-job的符号链接。从表面上看,它是/etc/init.d/screen-cleanup
  2. 把它移开。

锦上添花的是,transmission-daemon由Ubuntu 16上的原生systemd服务单元(/lib/systemd/system/transmission-daemon.service)控制,而van rc向后兼容机制和/lib/systemd/systemd-sysv-install最初并不适用于它。

再读

票数 8
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/429032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档