Có thể bắt đầu xử lý các liên kết tượng trưng đến tập tin cấu hình?


30

Tôi có tất cả các tệp cấu hình khởi động của mình dưới sự kiểm soát phiên bản. Cách lý tưởng của tôi để sử dụng upstart là tạo các liên kết mềm từ kho lưu trữ kiểm soát phiên bản của tôi (đồng bóng - không quan trọng) vào / etc / init nhưng không bắt đầu thấy các công việc. Mọi thứ đều ổn nếu tôi sao chép các tệp từ thư mục kho lưu trữ vào / etc / init.

Bất cứ ai cũng biết tại sao upstart không xử lý các liên kết tượng trưng hoặc thậm chí cứng?

Cảm ơn

Chris


1
Có lẽ đó là một quyết định thiết kế về phía các nhà phát triển Upstart bỏ qua các liên kết mềm? Dù sao, nếu kho lưu trữ của bạn nằm trên cùng một phân vùng /etc/init, hãy thử sử dụng các liên kết cứng.
Steven Thứ Hai

Đã thử các liên kết cứng và điều đó cũng không hoạt động :-(
Chris McCauley

Què. Thật vậy, các liên kết tượng trưng được bỏ qua mà không có một cuộc gọi thủ công để tải lại cấu hình. Thở dài. Tôi thích liên kết tượng trưng. Sạch hơn trong trường hợp sử dụng của tôi. Ồ tốt Tôi sẽ chỉ sao chép các tập tin vào, như jerk.
James T Snell

Câu trả lời:


9

Upstart không hỗ trợ symlink vì chúng có thể trỏ đến một tệp trên phân vùng không được tải khi khởi động .

Tôi đã khắc phục điều này trong dự án của riêng mình bằng cách đặt các tệp conf vào / etc / init / myscripts và sau đó ràng buộc nó vào một thư mục trong kho lưu trữ của tôi. mount --bind /etc/init/myscripts ~/code/repo/initscripts.

Thêm phần này vào / etc / fstab và liên kết sẽ được duy trì:

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

Điều này có hiệu quả cung cấp cho bạn các thư mục liên kết cứng. Upstart sẽ coi các tệp conf như bất kỳ tệp nào khác, vì chúng là cục bộ của / etc / init. DVCS của bạn cũng sẽ xem chúng là các tệp cục bộ trong repo, do đó, nó cũng sẽ coi chúng như bất kỳ tệp nào khác được lưu trữ ở đó. Tốt nhất của cả hai thế giới.


49

Upstart xem các thư mục cấu hình của nó với inotify và tải lại cấu hình khi bất kỳ tệp nào thay đổi hoặc một tệp mới được thêm vào. Rõ ràng điều này không làm việc cho các liên kết tượng trưng.

Để cập nhật thủ công cấu hình sử dụng

$ initctl reload-configuration

điều này được sử dụng để làm việc đáng tin cậy cho tôi. Gần đây, trên 1.3 mới bắt đầu, nó chỉ hoạt động trên các công việc bị dừng lại.
jcomeau_ictx

2
Đối với tôi symlink trong / etc / init / work nhưng nếu tôi thay đổi tệp phía sau symlink thì tệp không được đọc lại bởi các công cụ mới nhất. Tôi đã mất nhiều giờ để tìm ra rằng symlink là lý do. Nó hoạt động như một bộ đệm mà không ai muốn có.
peschü

1

Như đã được đề cập trước đó:

initctl reload-configuration

Tuy nhiên nếu bạn gặp lỗi như sau:

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")

Bạn phải gọi sudo:

sudo initctl reload-configuration
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.