Làm thế nào các dịch vụ hệ thống được bắt đầu trong 12.10?


12

Một điều luôn làm tôi bối rối trong Ubuntu là cách các dịch vụ hệ thống được bắt đầu. Tôi biết rằng Ubuntu sử dụng Upstart và hỗ trợ SysV, nhưng cái nào được sử dụng để bắt đầu dịch vụ? Điều này quan trọng khi bạn muốn bắt đầu "thủ công" cho một dịch vụ.

Ví dụ: trên hệ thống của tôi, tôi có các tệp cho các dịch vụ sau trong /etc/init.d/<service>(SysV) và /etc/init/<service>.conf(Upstart):

acpid, mysql, networking, qemu-kvm, ufw, libvirt-bin

Vì vậy, nếu tôi muốn vô hiệu hóa thực thi MySQL khi khởi động, tôi phải sử dụng cách Upstart hoặc cách SysV để vô hiệu hóa nó? Ngoài ra, làm thế nào tôi có thể biết cái nào thực sự được sử dụng để bắt đầu một dịch vụ chung?

Biên tập

Điều thực sự nghi ngờ ở đây không phải là cách vô hiệu hóa / kích hoạt dịch vụ bằng SysV / Upstart. Điều thực sự làm tôi bối rối là một số dịch vụ dường như được xác định (và được bật) trong SysV và Upstart cùng một lúc. Có bất kỳ ưu tiên nào giữa chúng (như nếu mysqlđược bật trong cả hai khởi chạy nó bằng SysV) không? Hoặc có thể là trường hợp một công cụ sử dụng công cụ kia trong nền?


1
Có một cái nhìn vào câu trả lời được chấp nhận ở đây: Askubfox.com/questions/133807/ khăn có một số liên kết thú vị.
Rinzwind

Câu trả lời:


2

Về các dịch vụ được xác định trong cả SysV và mới bắt đầu, nói chung nếu bạn khởi động lại thông qua SysV, bạn sẽ thấy một cái gì đó như thế này:

al@al-mythtv:~$ sudo /etc/init.d/mysql restart
[sudo] password for al: 
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mysql restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop mysql ; start mysql. The restart(8) utility is also available.
mysql stop/waiting
mysql start/running, process 29846

Điều tôi muốn nói là điều này có nghĩa là Upstart được ưa thích cho các dịch vụ này và việc triển khai SysV chỉ là một trình bao bọc.

Ngoài ra, tôi nghĩ rằng bạn có ý nghĩa của các thư mục ngược. / etc / init là cấu hình khởi động, /etc/init.d là khả năng tương thích SysV, nhưng nó chỉ là liên kết tượng trưng để khởi động cho các loại dịch vụ này.


6

Nó phần lớn phụ thuộc vào ứng dụng và bảo trì bao bì của nó.

Có một ưu tiên mạnh mẽ cho các tập lệnh Upstart vì chúng xử lý các sự kiện (nói chung là một điều tuyệt vời) nhưng rất nhiều ứng dụng không có đủ các tập lệnh Upstart có sẵn hoặc nhà bảo trì của ứng dụng đã chọn gắn với các mặc định (ứng dụng hoặc Debian) .

Dù bằng cách nào, bạn đang ở vị trí mà bạn phải thích nghi.

  • Dành cho người mới bắt đầu:
    • Đổi tên tập tin thành một cái gì đó không kết thúc .conf , hoặc
    • Thêm manualvào tập tin. Điều này sẽ cho phép bạn tải dịch vụ theo cách thủ công.
  • Đối với các dịch vụ cũ:

    update-rc.d -f <service> remove
    

Nếu bạn có một /etc/init.d/tập lệnh cho một cái gì đó một /etc/init/tập lệnh và bạn muốn kiểm tra xem phiên bản init.d có còn tồn tại không, bạn có thể kiểm tra với:

ls -l /etc/rc?.d/*<service>

Nếu bạn thấy một tải các liên kết tượng trưng, ​​nó sẽ được cài đặt trong init SysV cũ.


Vì vậy, nếu tôi có một dịch vụ được kích hoạt trong SysV và Upstart (ví dụ acpid:), tôi có thể cho rằng nó được SysV khởi chạy không? Hoặc nếu tôi muốn vô hiệu hóa nó, tôi sẽ cần phải sử dụng nó update-rc.dvà thủ thuật đổi tên?
Salem
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.