Làm thế nào để xác định lệnh tắt daemon với upstart?


9

Trong cấu hình mới bắt đầu, làm cách nào để xác định lệnh nào sẽ được sử dụng để tắt máy chủ. Hãy nói rằng tôi có daemon có hai quá trình riêng biệt.

  • startup.sh - để khởi động máy chủ
  • shutdown.sh - để tắt máy chủ

Giả sử tôi có một tập tin mới nhất trông như thế này.

description "Some Example Service"
author "Me"

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

exec startup.sh 

Làm thế nào để tôi nói với người mới bắt đầu rằng nó sẽ gọi shutdown.shkhi tắt máy chủ? Làm thế nào để bắt đầu bình thường mong đợi để tắt một daemon?

Câu trả lời:


10

Sử dụng execđể bắt đầu quá trình là tốt, nhưng khi dừng nó, nếu bạn thực sự cần phải chạy một tập lệnh hoặc tập lệnh cụ thể, bạn có thể sử dụng khổ pre-stopthơ.

pre-stop exec shutdown.sh

Tôi giả sử bạn đã thử chỉ sử dụng một đoạn thực thi và nó không hoạt động, có thể vì trình nền của bạn yêu cầu một số dọn dẹp chuyên dụng. Lưu ý rằng các daemon hoạt động tốt sẽ nhận được tín hiệu từ lúc bắt đầu khi công việc bị dừng và nếu chúng xử lý tín hiệu một cách thích hợp thì không cần phải dọn dẹp thêm.

Dừng một công việc liên quan đến việc gửi SIGTERM đến nó. Nếu có bất cứ điều gì cần phải được thực hiện trước SIGTERM, hãy làm nó ở đây. Có thể cho rằng, các dịch vụ nên xử lý SIGTERM rất duyên dáng, vì vậy điều này không cần thiết.

nếu có bất cứ điều gì quan trọng, như xả vào đĩa và tăng thời gian chờ không phải là một lựa chọn, thì điểm dừng trước không phải là một nơi tồi tệ để làm điều đó

Cũng đọc phần này cho toàn bộ quy trình công việc của những gì xảy ra khi bạn dừng một công việc. Lưu ý khi dừng trước được chạy và cách tín hiệu được gửi đến quá trình sau đó, đó là cách khởi động xử lý dừng công việc bình thường.

Nguồn của tôi là sách dạy nấu ăn Upstart chính thức tại: http://upstart.ubfox.com/cookbook/


1
"Lưu ý rằng các daemon có hành vi tốt sẽ nhận được tín hiệu từ lúc bắt đầu khi công việc bị dừng và nếu chúng xử lý tín hiệu một cách thích hợp thì không cần phải dọn dẹp thêm." - lưu ý rằng chúng tôi sử dụng các tập lệnh trong thế giới Unix để có quyền kiểm soát mọi thứ bên cạnh công việc lập trình viên. Và đây là nhận xét vô lý, bởi vì chúng tôi cần một nơi để bao gồm ví dụ gửi email, xóa khóa khỏi dis, v.v. và nhiệm vụ này không phải là một phần của chính daemon. Vì vậy, upstart chưa sẵn sàng để được sử dụng vào môi trường máy chủ.
kakaz

Từ câu trả lời này (The One!) Tôi thấy rằng không có cách nào tốt để làm những gì chúng ta cần?
kakaz
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.