Hiện tại có 3 hệ thống init chính được sử dụng bởi linux. Vài năm trước, chỉ có một, SysVinit. Nhưng SysVinit đã thiếu nghiêm trọng các khả năng như vẽ biểu đồ phụ thuộc dịch vụ, do đó, hiện tại nó đã bị phản đối ở hầu hết các bản phát hành. Hiện tại hầu hết các distro đang chuyển sang systemd . Mặc dù có cũng là mới nổi .
Nhưng đây là câu trả lời cho câu hỏi của bạn cho mỗi trong số 3 hệ thống init:
SysVinit
SysVinit hiện đang được Debian và RedHat sử dụng. Mặc dù phiên bản tiếp theo của RedHat (7) sẽ sử dụng systemd.
Cách phổ biến để kích hoạt các dịch vụ SysVinit khi khởi động là liên kết chúng trong /etc/rc3.d
(hoặc /etc/rc2.d
). Tất cả các dịch vụ có thể được tìm thấy trong /etc/init.d
. Tuy nhiên, xin lưu ý rằng các bản phân phối thường sẽ có công cụ riêng để quản lý các tệp này và công cụ đó nên được sử dụng thay thế. (Fedora / RedHat có service
và chkconfig
, ubfox có update-rc.d
)
Liệt kê các dịch vụ:
ls /etc/init.d/
Bắt đầu dịch vụ:
/etc/init.d/{SERVICENAME} start
hoặc là
service {SERVICENAME} start
Dừng phục vụ:
/etc/init.d/{SERVICENAME} stop
hoặc là
service {SERVICENAME} stop
Cho phép dịch vụ:
cd /etc/rc3.d
ln -s ../init.d/{SERVICENAME} S95{SERVICENAME}
( S95
được sử dụng để chỉ định thứ tự. S01 sẽ bắt đầu trước S02, v.v.)
Vô hiệu hóa dịch vụ:
rm /etc/rc3.d/*{SERVICENAME}
Hệ thống
Phân phối đáng chú ý nhất sử dụng systemd là Fedora. Mặc dù nó được sử dụng bởi nhiều người khác. Ngoài ra, với Debian đã chọn hệ thống khởi động hệ thống, nó sẽ trở thành hệ thống khởi động chính xác cho hầu hết các bản phân phối (ubfox đã thông báo rằng họ sẽ bỏ qua cho systemd).
Liệt kê các dịch vụ:
systemctl list-unit-files
Bắt đầu dịch vụ:
systemctl start {SERVICENAME}
Dừng phục vụ:
systemctl stop {SERVICENAME}
Cho phép dịch vụ:
systemctl enable {SERVICENAME}
Vô hiệu hóa dịch vụ:
systemctl disable {SERVICENAME}
Mới bắt đầu
Upstart được phát triển bởi những người Ubuntu. Nhưng sau khi debian quyết định đồng hành cùng systemd , Ubuntu tuyên bố họ sẽ bỏ cuộc .
Upstart cũng được RedHat sử dụng một thời gian ngắn, vì nó có mặt trong RHEL-6, nhưng nó không được sử dụng phổ biến.
Liệt kê các dịch vụ:
initctl list
Bắt đầu dịch vụ:
initctl start {SERVICENAME}
Dừng phục vụ:
initctl stop {SERVICENAME}
Cho phép dịch vụ:
Thật không may là 2 cách:
Sẽ có một tập tin /etc/default/{SERVICENAME}
chứa một dòng ENABLED=...
. Thay đổi dòng này thành ENABLED=1
.
Sẽ có một tập tin /etc/init/{SERVICENAME}.override
. Hãy chắc chắn rằng nó chứa start
(hoặc vắng mặt hoàn toàn), không manual
.
Vô hiệu hóa dịch vụ:
echo manual > /etc/init/{SERVICENAME}.override
Lưu ý: Ngoài ra còn có hệ thống init 'OpenRC' được Gentoo sử dụng. Hiện tại Gentoo là bản phân phối duy nhất sử dụng nó và nó không được xem xét để sử dụng, cũng không được hỗ trợ bởi bất kỳ bản phân phối nào khác. Vì vậy, tôi không bao gồm việc sử dụng nó (mặc dù nếu ý kiến là tôi làm, tôi có thể thêm nó).