Cách ngăn daemon khởi động khi khởi động trong Debian


16

Có một vài trình tiện ích tôi vô hiệu hóa khi bắt đầu khởi động. Ví dụ, tôi sử dụng như sau:

 sudo update-rc.d -f postgresql remove

Tôi thậm chí không chắc lệnh đó có đúng không và tôi không nhớ mình đã lấy nó từ đâu.

Dù sao, bất cứ khi nào tôi nâng cấp postgresql, cài đặt sẽ bị mất (tức là daemon khởi động khi khởi động lại).


1
Trên Debian với SysVinit, tôi thích file-rc. Thay vì quản lý các liên kết tượng trưng, ​​tôi quản lý một tệp văn bản với các cấu hình runlevel của mình.
Gilles 'SO- đừng trở nên xấu xa'

Câu trả lời:


22

update-rc.dban đầu được sử dụng bởi các kịch bản nâng cấp gói. removeđược gọi khi gỡ cài đặt gói và xóa tất cả các liên kết, defaultsđược gọi khi cài đặt gói enablehoặc disablecó thể được sử dụng tùy thuộc vào debconf và rất hữu ích cho sysadmin. Việc dọn dẹp removetrên thực tế không hữu ích để vô hiệu hóa một dịch vụ. Từ trang người đàn ông:

Một lỗi quản trị hệ thống phổ biến là xóa các liên kết với ý nghĩ rằng điều này sẽ "vô hiệu hóa" dịch vụ, nghĩa là điều này sẽ ngăn dịch vụ bắt đầu. Tuy nhiên, nếu tất cả các liên kết đã bị xóa thì lần tiếp theo gói được nâng cấp, tập lệnh postinst của gói sẽ chạy lại update-rc.d và điều này sẽ cài đặt lại các liên kết tại các vị trí mặc định của nhà máy. Cách chính xác để vô hiệu hóa các dịch vụ là cấu hình dịch vụ như đã dừng trong tất cả các đường chạy trong đó nó được khởi động theo mặc định. Trong hệ thống init System V, điều này có nghĩa là đổi tên các liên kết tượng trưng của dịch vụ từ S thành K.

sudo update-rc.d postgresql disablesẽ làm những gì bạn muốn, bởi vì nó giữ các symlink RC.d nhưng với tiền tố K (bị giết, bị dừng). Hoàn nguyên nó với một enable. Một số dịch vụ hỗ trợ bị vô hiệu hóa từ /etc/defaults/$servicetệp của họ , nhưng đáng buồn là có ngoại lệ. Các cách khác để vô hiệu hóa một dịch vụ là chmod -x /etc/init.d/$servicetệp hoặc chèn một tệp exit 0ở trên cùng của nó.


6

Để làm rõ giải pháp tốt nhất, tương tự như câu trả lời Tobu đã đưa ra:

  1. Không sử dụng update-rc.dvới removetùy chọn.
  2. Thay vào đó, sử dụng update-rc.dvới disabletùy chọn.

Thí dụ: update-rc.d postgresql disable


PLUS, Bạn cũng có thể tìm (và vô hiệu hóa) các dịch vụ khác, cụ thể hơn với systemctl.

Thí dụ: systemctl disable pppd-dns.service


+1 cho lời khuyên không sử dụng tùy chọn XÓA
PYK

3

Tobu hoàn toàn đúng, nhưng để hoàn thiện, có một công cụ để cung cấp cho bạn một cái nhìn tổng quan thông minh : sysv-rc-conf. Đối với bản sao và patse:

apt-get install sysv-rc-conf

Chạy sysv-rc-confbạn sẽ thấy tập lệnh nào được thực thi trong runlevel. Bạn có thể bật / tắt dịch vụ thông qua spacevà thoát với q.


2
Tôi cũng thích rcconf, nó trong repos tiêu chuẩn. Hãy nhớ rằng mặc dù không có cái nào trong số này sẽ hoạt động với tính năng mới, được mặc định trên Ubuntu. Mặc dù nhiều thứ vẫn sử dụng init kế thừa.
JM Becker
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.