为什么多个守护进程同时存在 Upstart 脚本和 init.d 脚本?

为什么多个守护进程同时存在 Upstart 脚本和 init.d 脚本?

我正在运行 Ubuntu 12.04.3 LTS 并安装了多项服务,如 Samba、DHCP 服务器等

当我运行“halt now”、“telinit 6”或类似命令时,我收到以下警告:

Since the script you are attempting to invoke has been converted
to an Upstart job, you may also use the...

我可以看到受影响的服务尝试停止/启动两次。一次通过 Upstart 作业,再次通过 /etc/rcN.d 文件夹中针对 init.d 脚本的 S/K 符号链接。也许我可以简单地删除 /etc/rcN.d 文件夹中的符号链接。

流程示例:

  1. 从 shell 运行“立即停止”
  2. Upstart 停止 Samba(因为 Samba 有一个 Upstart conf 文件)
  3. SysV 再次尝试停止 Samba(因为还有 /etc/rc0.d/K20smbd 符号链接)

我不明白/想要步骤 3,因为它似乎没有必要,并且显示了一个丑陋的警告。

为什么多个守护进程同时存在 Upstart 脚本和 init.d 脚本的符号链接?我必须手动清理每个 /etc/rcN.d 文件夹中的重复符号链接,这是正确的方法吗?

答案1

Ubuntu 具有兼容性init链接,每当您运行它们时,它们都会调用相应的新贵。

例如,如果您调用,sudo /etc/init.d/apache start您会链接到 upstart-job,它会向您显示一条您应该使用的不错的信息消息sudo services apache start,然后它会自行运行该命令。

ls -l /etc/init.d/network-manager 
lrwxrwxrwx 1 root root 21 Sep 18 14:02 /etc/init.d/network-manager -> /lib/init/upstart-job

cat /lib/init/upstart-job
#!/bin/sh -e
# upstart-job
#
# Symlink target for initscripts that have been converted to Upstart.
{ lots of ASCII awesomeness }

答案2

我发现这是我的 Puppet 脚本中的错误配置。

“服务”类型属性“启用”创建了 SysV 初始化脚本,而不是识别 Upstart 脚本。

相关内容