У меня все файлы конфигурации выскочки находятся под контролем версий. Мой идеальный способ использовать выскочку - создать программные ссылки из моего репозитория контроля версий (меркуриального - не то чтобы это важно) в / etc / init, но выскочка не видит задания. Все нормально, если скопировать файлы из каталога репозитория в / etc / init.
Кто-нибудь знает, почему выскочка не может обрабатывать символические или даже жесткие ссылки?
Спасибо
Крис
Upstart следит за своими каталогами конфигурации с помощью inotify и перезагружает конфигурацию при изменении любого из файлов или добавлении нового файла. По-видимому, это не работает для символических ссылок.
Чтобы обновить конфигурацию вручную, используйте
$ initctl reload-configuration
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 также будет видеть их как локальные файлы в репо, поэтому он также будет обрабатывать их, как и любые другие файлы, хранящиеся там. Лучшее из обоих миров.
Как упоминалось ранее:
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