我最近将我的服务器从 Ubuntu V14.04 升级到 V16.04,现在 systemctl 似乎不再工作了。
我需要防止传输守护进程在启动时自动启动,所以我发出命令
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
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 删除屏幕清理脚本解决了问题
$ 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).
我可以看到服务现在残疾人按要求
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
答案1
/lib/systemd/systemd-sysv-install
systemd-sysv-generator
是一个钩子,其工作是执行其他服务管理系统可以识别的非本机启用/禁用操作。 Ubuntu/lib/systemd/systemd-sysv-install
简称为 Ubuntu 的/usr/sbin/update-rc.d
.反过来又调用/sbin/insserv
.反过来,它会发现有一个 van Smoorenbugrc
脚本,/etc/init.d
并尝试从中获取 LSB 标头信息。
/sbin/insserv
有一个特殊情况,它会识别出rc
它找到的 van Smoorenburg 脚本实际上是 Upstart 程序的符号链接/lib/init/upstart-job
。因为这是一个填充许多 van Smoorenburgrc
脚本的通用程序,所以它不会具有适合特定服务的 LSB 标头信息。因此,/sbin/insserv
尝试使用子命令调用rc
脚本/lib/init/upstart-job
,lsb-header
使其计算并打印出服务的正确 LSB 标头。
但/lib/init/upstart-job
实际上并不支持该子命令。这些软件从未正确集成。 /lib/init/upstart-job
running initctl
,它尝试连接到正在运行的 Upstart 服务管理器,当然会失败(因为其中一个没有运行),并打印您看到的有关无法连接到 socket 的第一个错误/com/ubuntu/upstart
,然后打印您看到的第二个错误关于lsb-header
子命令不被支持“用于新贵工作”(即使这就是它的用途)。
结果就是一切都出错了。
多年来一直出错。人们可以找到报告此错误的人,当然,当人们insserv
直接或间接在 Upstart 和 van Smoorenburg 领导下运行时init
,当然也发生了这种情况,可以追溯到十多年前。 2016 年,有人在 AskUbuntu 上询问过这个问题。 这是几个 Launchpad 错误,例如这个是2016年的。
有趣的是,在其中一个 Launchpad 错误(2010 年的错误之一)中,有人试图提供补丁以便upstart-job
理解lsb-header
子命令并insserv
至少给出某物一起工作,即使它的信息相当少。除了一些无法自行修复软件的用户之外,没有人注意到这一点。
当然,这些 van Smoorenburgrc
脚本是 Upstart 的包装器,以方便那些不了解如何直接使用 驱动 Upstartinitctl
但知道如何驱动旧 van Smoorenburgrc
脚本的软件和人员。但是,您使用的是 Ubuntu 16; systemd 操作系统。 systemd 的向后兼容机制采用了一些 van Smoorenburgrc
脚本他们自己是别的东西的向后兼容机制,将它们包装在 systemd 本机单元中,并最终尝试将发送到 systemd 服务管理器的命令反射到不存在的 Upstart 服务管理器。
这太可笑了。
/etc/init.d
找到指向 的符号链接/lib/init/upstart-job
。从情况来看确实如此/etc/init.d/screen-cleanup
。- 去掉它。
锦上添花的是,它由Ubuntu 16 上的本机 systemd 服务单元 ( ) 和 van Smoorenburg向后兼容机制transmission-daemon
控制,并且首先不适用于它。/lib/systemd/system/transmission-daemon.service
rc
/lib/systemd/systemd-sysv-install
进一步阅读
- 彼得·莱因霍德森 (2009-09-17)。insserv:应该处理 /lib/init/upstart-job 条目。 Debian 错误#547235。
- ”新贵工作兼容性“
insserv
..Debian 7 手册页。 - https://sources.debian.org/src/upstart/1.11-5/debian/upstart-job/#L114
- https://unix.stackexchange.com/a/233581/5132
- https://unix.stackexchange.com/a/394191/5132