我拥有版本控制下的所有新贵configuration文件。 我使用upstart的理想方式是从我的版本控制库(mercurial – 不是那么重要)创build软链接到/ etc / init,但是upstart无法看到作业。 如果我将文件从版本库目录复制到/ etc / init,一切都很好。
任何人都知道为什么暴发户无法处理符号甚至是硬链接?
谢谢
克里斯
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也会将它们视为回购站中的本地文件,因此它也会将其视为存储在其中的任何其他文件。 两全其美。
Upstart使用inotify监视其configuration目录,并在任何文件更改或添加新文件时重新加载configuration。 显然这不适用于符号链接。
手动更新configuration使用
$ initctl reload-configuration
如前所述:
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