Có gì khác biệt giữa dịch vụ của Wap và trên mạng /etc/init.d/.


113

Tôi đã quản lý cài đặt máy chủ cả bật và tắt hương vị Ubuntu trong một thời gian - Tôi đã trở nên khá điều chỉnh để /etc/init.d/khởi động lại các dịch vụ. Bây giờ tôi nhận được tin nhắn này:

root@tatooine:~# /etc/init.d/mysql status
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql status

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the status(8) utility, e.g. status mysql
mysql start/running, process 14048

Điều này dường như đã được đưa ra trong LTS mới nhất của Ubuntu - tại sao? Điều gì là xấu về /etc/init.d/và những gì / có sự khác biệt giữa service/etc/init.d/?


3
Các Upstart Cookbook chứa một lời giải thích tốt về hợp lý để chuyển đổi.
ændrük

Câu trả lời:


103

/etc/init.dkịch bản là cách làm cũ. Họ đến từ tiêu chuẩn System V. Tuy nhiên, các tập lệnh này chỉ được kích hoạt theo một trình tự cụ thể, do đó không có phụ thuộc thực sự nào có thể được thiết lập.

Do đó, upstart đã được phát triển với mục đích thay thế tất cả các /etc/init.dtập lệnh bằng tập lệnh khởi động (in /etc/init).

servicecho phép chuyển đổi suôn sẻ từ /etc/init.dtập lệnh sang tập lệnh khởi động. Trong tương lai, khi ngày càng có nhiều tập lệnh được chuyển sang mới bắt đầu, dịch vụ vẫn sẽ hoạt động vì tìm thấy cả hai khả năng.


6
Upstart sẽ được loại bỏ ngay bây giờ, phải không?
tên người dùng sai

6
systemd sẽ thay thế upstart sau khi có kế hoạch - 14.04 LTS sẽ sử dụng upstart. Điều này đã được công bố bởi Mark Shuttleworth , trong một bài đăng có tiêu đề Mất duyên dáng
không phải là một bản vá

28

Đồng thời kiểm tra trang man cho lệnh dịch vụ: man service

servicechạy một kịch bản trong một môi trường có thể dự đoán được (thư mục làm việc là / và chỉ có 2 biến môi trường được đặt: LANG và TERM). Nó cũng thêm khả năng để làm --full-restart. Vì vậy, để tổng hợp:

  1. service có thể chạy các tập lệnh từ / etc / init hoặc /etc/init.d (khởi động hoặc System V)
  2. service chạy các kịch bản trong một môi trường dự đoán.

Khía cạnh "môi trường dự đoán" có thể gây ra vấn đề cho bạn nếu tập lệnh của bạn phụ thuộc vào một biến môi trường vì một số lý do. Có lẽ có một cách để khắc phục điều đó, nhưng tôi không biết nó là gì và điều đó nằm ngoài phạm vi của câu hỏi này :)


2
Xin chào @Joe Marty, Đây chính xác là vấn đề tôi đang thử nghiệm bây giờ. Tôi có một dịch vụ chuyển tiếp trên biến môi trường "HIỂN THỊ" không xuất hiện khi khởi động trình nền với "dịch vụ myservice bắt đầu" nhưng xuất hiện khi bắt đầu với "/etc/init.d/myservice start". Bất kỳ ý tưởng về làm thế nào để có sẵn biến này?
frandevel
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.