Vì vậy, một điểm của công việc mới bắt đầu là viết đơn giản.
Có rất nhiều phép thuật shell shell trong các script init.d được lặp đi lặp lại. Báo cáo trường hợp, theo dõi pidfile, dòng bình luận lsb. Nó không rõ ràng làm thế nào để viết một tập lệnh init.d TỐT mà không cần phải đọc một tập lệnh.
Nếu bạn đã trải qua khó khăn trong việc viết tất cả những điều đó, thì bạn không cần một công việc mới bắt đầu trừ khi, như tôi đã đề cập trong một bình luận khác, bạn phụ thuộc vào một công việc / sự kiện mới nổi khác.
Nhưng thực sự, mới bắt đầu làm cho mọi thứ thực sự đơn giản. Bạn không cần phải bắt đầu trước trừ khi bạn cần thiết lập mọi thứ như tmpdirs, ulimits hoặc đối số thời gian chạy. Bạn không cần dừng lại sau khi bạn muốn đảm bảo dọn dẹp sau khi dịch vụ (dịch vụ thực sự cần được dọn sạch sau khi thoát ra bình thường).
Thông thường, một tập lệnh init.d khổng lồ với nhiều tùy chọn thực hiện theo công việc mới bắt đầu từ 10 - 15 dòng. Các tập lệnh init.d phức tạp nhất có thể có hầu hết logic của chúng được đưa vào trước khi bắt đầu. Chìa khóa ở đây là nó chỉ là một đoạn mã nhỏ để thiết lập môi trường cho quy trình, và không logic khi xử lý start / stop / respawn / etc.
Phần khó nhất, và phần mà mọi người thường mắc sai lầm nhất là biết khi nào nên bắt đầu / dừng công việc. start on runlevel [2345]
có vẻ hợp lý, nhưng bỏ qua thực tế là mạng đang xuất hiện song song tại thời điểm đó, cũng như các hệ thống tập tin cục bộ gắn kết. Điều quan trọng là thử và tìm ra chính xác những điều tối thiểu bạn cần (các dịch vụ khác, hệ thống tập tin, mạng, v.v.) để chạy và bắt đầu khi những việc đó được thực hiện. Hầu hết các dịch vụ mạng truyền thống nên làm start on (local-filesystems and net-device-up IFACE!=lo)
.