Có thể viết các kịch bản dịch vụ di động để kiểm soát một daemon?


7

Tôi (hoặc một trong những đồng nghiệp của tôi) cần phải viết một hoặc nhiều tập lệnh shell để điều khiển việc thực thi một daemon. Chúng ta cần có khả năng khởi động daemon, bảo nó tắt máy một cách duyên dáng và buộc tắt máy. Về cơ bản, đó là loại mà người ta thường sử dụng một tập lệnh /etc/init.dcho.

Chúng tôi sẽ triển khai lên Ubuntu. Chúng tôi có thể muốn triển khai lên RedHat / CentOS và có thể là AIX. Tôi muốn có khả năng triển khai đến bất kỳ unix nào, vì tôi thích làm mọi thứ một cách hợp lý.

Vì vậy, có thể viết kịch bản dịch vụ di động?

Tôi cho rằng tôi có thể viết một tập lệnh shell Bourne di động hoạt động giống như một tập lệnh init.d bình thường và chấp nhận 'bắt đầu' và 'dừng lại' dưới dạng các lệnh. Điều đó sẽ hoạt động ở bất cứ đâu và sẽ cung cấp giao diện tự nhiên trên ít nhất các hệ thống kiểu Debian và RedHat. Nó sẽ phù hợp ở nơi khác? Là init.d phổ quát? Có bất kỳ cạm bẫy để xem ra?

Có công cụ nào để tạo tập lệnh dịch vụ ở các dạng khác nhau không? Một cái gì đó nơi tôi có thể viết các đoạn script để bắt đầu và dừng lại, và có công cụ tạo ra các kịch bản cho các nền tảng khác nhau.

Có sự thay thế nào cho các quy ước về kịch bản dịch vụ dành riêng cho nền tảng không? Tôi đã đi qua daemontoolsrunit ; những lựa chọn thay thế cho các tập lệnh init.d? Họ có tốt không? Có gì khác như thế này?

Liệu điều này có ý nghĩa gì?


1
bây giờ có LSB (Cơ sở tiêu chuẩn Linux) cho những thứ như vậy ... bạn có thể muốn xem xét điều đó.
xenoterracide

Tập VIII. Khởi tạo hệ thống có một vài phần về init script, đó là sự thật. Vì vậy, ít nhất các tập lệnh init là tiêu chuẩn trên các bản phân phối Linux.
Tom Anderson

Câu trả lời:


1

Ot có thể viết chúng theo cách để nó không phụ thuộc vào chi tiết cụ thể của distro, nhưng không phải tất cả các dịch vụ bắt đầu * nix theo cùng một cách. Tôi không chắc chắn về AIX, nhưng Solaris chẳng hạn thậm chí không sử dụng sysvinit, thay vào đó nó sử dụng smf.

CentOS / RHEL thường sử dụng /etc/rc.d/fifts để hỗ trợ các chức năng phổ biến cho tập lệnh init, trong khi Debian sử dụng tệp nhị phân gọi là start-stop-daemon. Đây có thể là một lý do mà các tập lệnh init thường không được tìm thấy trong các gói ngược dòng.

Cá nhân, tôi sẽ viết một tập lệnh init cho mỗi HĐH được hỗ trợ, để được bao gồm trong gói của HĐH đó.


LSB bắt buộc một tệp /lib/lsb/init-functionschứa một số chức năng tiêu chuẩn; Tôi nghĩ rằng những thứ này bao bọc như thế start-stop-daemon, vì vậy có một thước đo về tính di động ở đó. Tuy nhiên, tài liệu về các chức năng này rất kém.
Tom Anderson

Và vâng, tôi vẫn đang làm việc này!
Tom Anderson
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.