Ubuntu 16.04.1:为什么有些程序同时由 systemd 和 initV 系统启动?

Ubuntu 16.04.1:为什么有些程序同时由 systemd 和 initV 系统启动?

我全新安装了 Ubuntu 16.04.1 nginx,当 dpkg 安装 nginx 时,它在两个位置注册了启动时间配置。

系统位置

systemd 配置,其中规定在启动时启动 nginx 守护进程(或“多用户目标”)

% ls -l /etc/systemd/system/multi-user.target.wants/nginx.service                       
/etc/systemd/system/multi-user.target.wants/nginx.service -> /lib/systemd/system/nginx.service

初始化V位置

initV 配置,规定在启动时启动 nginx 守护进程(或“运行级别 5”)

% ls -l /etc/rc5.d/S02nginx
lrwxrwxrwx 1 root root 15 Apr  2 23:27 /etc/rc5.d/S02nginx -> ../init.d/nginx

如果我禁用 nginx,systemd 会给出一些输出,表明正在发生某种向后兼容操作

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

这将删除上面的两个符号链接。
为什么要这样设置呢?为什么不只有其中之一——新的 systemd 配置或旧的 systemV init ?

答案1

作为约旦注释,这是从 Debian 继承的,支持不同的 init 系统。不仅如此,您还可以更改初始化系统而无需重新安装,并期望您的配置能够保留 - 包括启用或禁用哪些服务。这就是 systemd 和sysvinit设置保持同步的原因。 (请注意,至少某些正在使用的功能是由上游 systemd 提供的,而不是特定于 Debian 或 Ubuntu 的。)

相关内容