Sử dụng khởi động với dừng không xác định


8

Tôi mới bắt đầu, vì vậy tôi đã viết một tập lệnh rất cơ bản chỉ để in vào tệp nhật ký có tên: vm-service.confmà tôi đã đặt /etc/init:

description "Virtual Images"
author      "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn   


script
echo "DEBUG: `set`" >> /tmp/vm-service.log

end script


pre-stop script
    echo "DEBUG: `set`" >> /tmp/vm-service.log
end script

nếu tôi chạy sudo start vm-service, nó xuất ra:

vm-service start/running, process 29034

Nhưng, khi tôi chạy sudo stop vm-service, nó xuất ra:

stop: Unknown instance

Tôi đã thử chạy sudo initctl reload-configuration, nhưng tôi vẫn nhận được lỗi khi dừng.

Tôi đã xem cuốn sách nấu ăn nhưng có lẽ tôi đang thiếu một cái gì đó rõ ràng.

Câu trả lời:


7

Upstart sẽ xem xét công việc bị dừng nếu tiến trình chính (những gì được chạy nếu đoạn script hoặc exec stanzas được chỉ định) thoát. Upstart sau đó sẽ chạy quá trình hậu khởi động.

Vì vậy, những gì đang xảy ra là tập lệnh đầu tiên đang chạy và thoát, Upstart đang xem xét công việc đã dừng, sau đó tập lệnh thứ hai đang chạy và thoát. Nếu bạn chạy lệnh dừng trên một công việc đã dừng, nó sẽ in thông báo bạn đã thấy.

Để xử lý việc này, hãy sử dụng một khổ thơ trước khi bắt đầu:

pre-start exec foo --bar

post-start exec baz --foo

nếu bạn làm điều này, Upstart sẽ thấy công việc được bắt đầu khi đoạn thơ bắt đầu trước kết thúc, và không dừng lại.

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.