Bắt đầu một dịch vụ trong khi khởi động


7

Tôi đã tạo một dịch vụ cho một ứng dụng và tôi muốn ứng dụng này được khởi động khi khởi động. Trong bảng kê khai dịch vụ, tôi nhận ra rằng có một thuộc tính cho điều này (enable = "true"), nhưng tôi đã tránh điều này vì một khía cạnh đặc biệt khó chịu:

Việc nhập khẩu là một phần của tập lệnh. Có dịch vụ là "được kích hoạt" có nghĩa là nó sẽ được khởi động lại khi nhập. Vấn đề là tôi không chắc chắn làm thế nào để đợi cho đến khi quá trình được kích hoạt trước khi tiếp tục. Vì vậy, những gì tôi làm trong tập lệnh là nhập với cài đặt được bật là "false", sau đó chạy "svcadm enable -s <service>".

Vì vậy, tôi đã tự hỏi nếu có ai có bất kỳ câu trả lời cho bất kỳ một trong những câu hỏi sau:

  1. Làm thế nào để bạn thực hiện một dịch vụ hiện có bắt đầu khi khởi động (hy vọng tránh bổ sung thủ công vào RC3.d)?
  2. Làm thế nào để bạn thực hiện nhập svccfg chờ cho đến khi dịch vụ được bật hoàn toàn trước khi tiếp tục?
  3. Có cách nào thanh lịch để đợi cho đến khi một dịch vụ được bắt đầu trước khi tiếp tục (tránh việc grepping thủ công để kích hoạt trong một vòng lặp) không?

Cảm ơn.


Bạn có thể làm rõ câu hỏi 2 không? Tôi đã tạo một số dịch vụ được bật theo mặc định và có vẻ như nó hoạt động tốt.
bahamat

Câu trả lời:


0

Tôi sẽ cố gắng trả lời câu hỏi của bạn về Solaris SMF ...

  1. Để bắt đầu dịch vụ khi khởi động, bạn đơn giản phải kích hoạt dịch vụ với

    # svcadm enable FRMI
    

    Ví dụ: để kích hoạt dịch vụ "ipfilter", bạn cần thực hiện

    # svcadm enable ipfilter
    

    Điều này sẽ được kích hoạt trên cột mốc hiện tại, vì vậy, không cần thực hiện bất kỳ thay đổi nào trên /etc/rcX.dthư mục

  2. Tôi không hiểu tại sao bạn cần quá trình nhập để chờ một số frmi khác, nhưng, tôi thường nhập "bảng kê khai" và sau đó đưa lên mạng với svcadm, ví dụ

    # svccfg validate MANIFEST
    # svcadm enable FRMI
    
  3. Để chờ frmi khác, bạn có thể sử dụng tùy chọn "phụ thuộc" bên trong tệp kê khai, như bạn có thể thấy ở đây

    <dependency
        name='filesystem-local'
        grouping='require_all'
        restart_on='none'
        type='service'>
        <service_fmri value='svc:/system/filesystem/local:default' />
    </dependency>
    

Tôi có nhiều ví dụ về cách cài đặt và sử dụng Solaris SMF trong Blog của tôi (bằng tiếng Tây Ban Nha), nhưng, ví dụ, ở đây bạn có thể xem một ví dụ, Cách cài đặt PostgreQuery 9.0.3 trên OpenIndiana hoặc Cách cài đặt Apache Tomcat bằng RBAC và SMF trên OpenIndiana


0

Có lẽ bạn có thể giải quyết điều này bằng cách làm cho dịch vụ của bạn phụ thuộc vào dịch vụ khác chưa được bật.


Cám ơn vì sự gợi ý. Thật không may, tôi không thực sự thoải mái với cách giải quyết đặc biệt này. Tôi thực sự đánh giá cao câu trả lời mặc dù.
julian
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.