upstart 可以处理配置文件的符号链接吗?

upstart 可以处理配置文件的符号链接吗?

我的所有 upstart 配置文件都处于版本控制之下。我使用 upstart 的理想方式是从我的版本控制存储库(mercurial - 这并不重要)创建软链接至 /etc/init,但 upstart 无法看到作业。如果我将文件从存储库目录复制到 /etc/init,则一切正常。

有人知道为什么 upstart 无法处理符号链接甚至硬链接吗?

谢谢

克里斯

答案1

Upstart 不支持符号链接,因为它们可能指向启动时未加载的分区上的文件

我在自己的项目中解决了这个问题,将 conf 文件放在 /etc/init/myscripts 中,然后将其绑定到我的存储库中的目录mount --bind /etc/init/myscripts ~/code/repo/initscripts

将其添加到 /etc/fstab 并且绑定将会持久:

/etc/init/myscripts  /home/me/code/repo/initscripts      none    bind

这实际上为您提供了硬链接目录。Upstart 将像对待其他文件一样对待 conf 文件,因为它们是 /etc/init 的本地文件。您的 DVCS 也会将它们视为存储库中的本地文件,因此它也会像对待存储在那里的任何其他文件一样对待它们。两全其美。

答案2

Upstart 使用 inotify 监视其配置目录,并在任何文件发生更改或添加新文件时重新加载配置。显然,这对符号链接不起作用。

要手动更新配置,请使用

$ initctl reload-configuration

答案3

正如之前所提:

initctl reload-configuration

但是如果你收到如下错误:

initctl: Rejected send message, 1 matched rules; type="method_call", sender=":1.155" (uid=1000 pid=6177 comm="initctl reload-configuration ") interface="com.ubuntu.Upstart0_6" member="ReloadConfiguration" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

您必须调用 sudo:

sudo initctl reload-configuration

相关内容