Cách chính xác để cài đặt một dịch vụ khởi động tùy chỉnh


51

Tôi đang sử dụng các dịch vụ mới nhất trên máy chủ của mình. Viết một tập tin conf và đặt nó vào /etc/initlà đủ dễ dàng, nhưng dường như không hoàn toàn cài đặt. Đối với một, service --status-allkhông liệt kê dịch vụ mới của tôi. Tôi đã kiểm tra và nếu tôi tạo một liên kết /etc/init.dđến /lib/init/ubstart-jobnó sẽ hiển thị trong trạng thái. Nhưng làm điều này bằng tay khiến tôi nghĩ rằng tôi không làm đúng, và có thể có các bước cấu hình khác không được thực hiện.

Cách chính xác để cài đặt một dịch vụ mới nhất sao cho nó được đăng ký đúng cách trong tất cả các công cụ xử lý dịch vụ?


2
Anh chàng này đã trả lời một trong những câu hỏi của tôi sử dụng dịch vụ mới nổi và đã đưa ra một lời giải thích chi tiết, nó có thể chỉ ra một bước mà có thể đã bị bỏ qua askubuntu.com/a/278128/75967
Meer Borg

1
Ý bạn là /lib/init/upstart-jobsao
dinois

Câu trả lời:


46

Khi ban đầu bạn sao chép một tệp conf mới vào thư mục / etc / init, bạn cần gọi:

initctl reload-configuration

Bằng cách này, sự khởi đầu của bạn nên được đăng ký đúng cách.


8
Vì vậy, điều này thiết lập chính xác công việc (nghĩa là startstopcông việc) nhưng nó không làm cho công việc hiển thị trong trạng thái tất cả. Tôi vẫn phải tự thêm nó vào /etc/init.d/để điều đó xảy ra.
James McMahon

1
@JamesMcMahon Bạn cần chạy initctl listlệnh với sudo : sudo initctl list. Bằng cách đó bạn sẽ thấy danh sách đầy đủ các dịch vụ.
Shahriyar Imanov 19/12/14

Tại sao sudo, nó dường như không thay đổi đầu ra của danh sách initctl cả.
LovesTha

@JamesMcMahon I still had to manually add it to /etc/init.d,. Bạn vẫn phải thêm những gì? Điều đó có nghĩa là, ngoài một X.conftệp được thêm vào /etc/init, bạn cũng cần thêm một tệp vào /etc/init.d?
Kevin Meredith

@KevinMeredith, Xin lỗi tôi không chi tiết hơn. Đã 2 năm và tôi không thể nhớ chi tiết cụ thể. Nếu bạn nhìn vào một số tài liệu init.d thì hy vọng nó sẽ rõ ràng.
James McMahon

18

Kiểm tra hướng dẫn sử dụng dịch vụ:

dịch vụ --status-all chạy tất cả các tập lệnh init, theo thứ tự bảng chữ cái, với lệnh trạng thái. Tùy chọn này chỉ gọi trạng thái cho các công việc sysvinit, các công việc mới bắt đầu có thể được truy vấn theo cách tương tự với danh sách initctl.

(nhấn mạnh thêm)

Đó là lý do tại sao việc thêm nó vào /etc/init.d (nơi đặt các công việc sysvinit) đã thực hiện công việc đó. Vì vậy: hãy thử chạy danh sách initctl thay thế :).


That's why adding it Thêm cái gì? Ngoài my_service.conftập tin trong /etc/init, bạn cũng cần có một /etc/init.dtập tin?
Kevin Meredith

Không hoạt động với Ubuntu 16.04.4 Danh sách LTS Kết nối bị từ chối
Nine9five

13

Đối với dịch vụ SysV

Đảm bảo rằng bạn làm theo các bước sau trong khi thêm / tạo dịch vụ mới trong Ubuntu.

  1. Tạo tập tin dịch vụ trong /etc/init.d/<service name>
  2. chmod 700 /etc/init.d/<service name>
  3. update-rc.d <service name> defaults
  4. update-rc.d <service name> enable

Bây giờ nhìn thấy bạn dịch vụ trong

service --status-all

15
câu trả lời của bạn liên quan đến sysv và không bắt đầu. bạn có thể muốn xóa nó
jcomeau_ictx

3
Đó thực sự là một phản ứng hữu ích.
ATorras

Mặc dù nó liên quan đến một serivice khác, nó thực sự hữu ích
wuppi

1

Tôi đã phát hiện ra rằng một lỗi trong tệp .conf có thể khiến công việc không thể nhận ra đối với initctl. ví dụ: có một setuiddòng trong Upstart phiên bản 1.3 trở về trước.


1

Mặc dù câu trả lời được chọn hiện tại là chính xác để đưa dịch vụ mới được thêm vào để bắt đầu, nhưng nó không đặc biệt hữu ích cho việc tìm hiểu TẠI SAO một cấu hình trong / etc / init / không tải - phần đầu tiên bị thiếu sử dụng init-checkconf để đảm bảo cấu hình của bạn là hợp lệ, và sau đó sử dụng cấu hình tải lại:

####Test the new config - resolving any issues before continuing:
ERROR: File /etc/init/test.conf: syntax invalid:
test.conf:35: Unterminated quoted string

####then fix and recheck:
# init-checkconf /etc/init/test.conf
File /etc/init/test.conf: syntax ok

####then reload:
# initctl reload-configuration

#### and start:
# start test
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.