![为什么多个守护进程同时存在 Upstart 脚本和 init.d 脚本?](https://linux22.com/image/50659/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%A4%9A%E4%B8%AA%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E5%90%8C%E6%97%B6%E5%AD%98%E5%9C%A8%20Upstart%20%E8%84%9A%E6%9C%AC%E5%92%8C%20init.d%20%E8%84%9A%E6%9C%AC%EF%BC%9F%20.png)
我正在运行 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 文件夹中的符号链接。
流程示例:
- 从 shell 运行“立即停止”
- Upstart 停止 Samba(因为 Samba 有一个 Upstart conf 文件)
- 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 脚本。