Câu trả lời:
Bạn có thể thay đổi thứ tự bằng cách đổi tên các liên kết tượng trưng trong /etc/rcX.d/ trong đó x sẽ là cấp độ chạy của bạn.
Bạn sẽ thấy một loạt các tệp bắt đầu bằng Sxx hoặc Kxx. Các liên kết S được truy tìm trong khi khởi động trong khi các liên kết K được phân tích cú pháp để tắt máy. Xx ở đây đại diện cho thứ tự.
Nhưng thứ tự này được đặt ra vì một lý do, vì vậy hãy cẩn thận trong khi thay đổi chúng. Ví dụ. ntpd chỉ nên bắt đầu sau khi hệ thống con mạng được khởi tạo.
Thay vì thực hiện thủ công, như được đề xuất trong các câu trả lời khác, bạn cũng có thể thay đổi tập lệnh init. Chỉ cần thêm một dòng như vậy vào tiêu đề:
# chkconfig: 35 90 10
Điều này sẽ hướng dẫn chkconfig
thêm dịch vụ vào các đường băng 3 và 5, với vị trí bắt đầu là 90 và vị trí tiêu diệt là 10.
chkconfig off servicename && chkconfig on servicename
Bạn muốn đọc một chút về thư mục runlevels và RC.d của bạn . Trong các thư mục RC.d, bạn có thể tìm thấy các liên kết S và K, như S20apache K10apache, về cơ bản là những gì yêu cầu khởi động / tắt tập lệnh.
Có một số thay đổi được thực hiện trên kiến trúc này nhưng hầu hết các linux vẫn đang sử dụng nó.
rcorder
đã được khoảng một thời gian.
svc
, nhưng có thể làm mà không cần những thứ xml
Nếu bạn đã đến đây, rất có thể bạn có hai dịch vụ trong đó một dịch vụ phụ thuộc vào nhau, nhưng vì chúng bắt đầu không đúng thứ tự, nên dịch vụ phụ thuộc không bắt đầu. Các đề xuất về chỉnh sửa các liên kết tượng trưng là thông tin, về mặt minh họa cách trình tự khởi động chạy và sẽ hoạt động ổn định cho đến khi ai đó thực hiện "chkconfig" trên dịch vụ của bạn tại đó điểm liên kết sẽ được tạo lại như ban đầu. Thực sự, bạn muốn giải quyết vấn đề ở cấp độ init script, điều này thực sự ít lộn xộn hơn để làm. Nó cũng sẽ được nhất quán trên các đường băng khác nhau. Có lẽ bạn sẽ không cần phải thêm một dòng "# chkconfig" như được đề xuất trong câu trả lời 4 vì có khả năng sẽ có một dòng tương tự trong đó.
Tôi sẽ sử dụng một ví dụ về máy chủ chạy Openldap (slapd) với phần phụ trợ cơ sở dữ liệu MySQL (mysqld). Cấu hình cặp đó, và tại sao bạn có thể muốn, là một câu chuyện hoàn toàn khác.
Khi khởi động, Openldap không khởi động được vì nó phụ thuộc vào MySQL và trình tự khởi động đã cố gắng khởi động trước khi nó - slapd có vị trí 27 và mysqld có vị trí 64
Các liên kết tượng trưng có liên quan trong /etc/rc3.d/ là
S27slapd -> ../init.d/slapd
and
S64mysqld -> ../init.d/mysqld
Tôi tìm các giá trị được đặt trong hai tập lệnh init:
[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73
Tôi chỉnh sửa dòng chkconfig trong /etc/rc.d/init.d/slapd để có vị trí bắt đầu cao hơn vị trí trong /etc/rc.d/init.d/mysqld (Tôi đã chọn 85)
[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73
Tôi thực hiện "chkconfig slapd" và kiểm tra lại các liên kết tượng trưng
[root ~]# chkconfig slapd on
[root ~]# ls -l /etc/rc3.d/ | grep mysqld
lrwxrwxrwx 1 root root 16 Dec 10 13:45 S64mysqld -> ../init.d/mysqld
[root ~]# ls -l /etc/rc3.d/ | grep slapd
lrwxrwxrwx 1 root root 15 Apr 28 14:18 S85slapd -> ../init.d/slapd
Bây giờ, khi máy chủ này khởi động, mysqld khởi động trước slapd và tất cả đều đúng với thế giới.