Làm cách nào để thay đổi thứ tự khởi động / khởi động dịch vụ Linux?


Câu trả lời:


11

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.


21

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 chkconfigthê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.


Điều này. Hoàn toàn thế này. Nếu bạn tự đổi tên các liên kết tượng trưng, ​​bạn sẽ bất ngờ nếu có ai đó xuất hiện và chạychkconfig off servicename && chkconfig on servicename
batfastad

Làm việc như người ở. Tôi cần phải cấu hình các phụ thuộc giữa mysqld và một thùng chứa servlet. Tôi không thể tìm ra vị trí bắt đầu của mysqld, vì vậy tôi đã định cấu hình vị trí bắt đầu của bộ chứa servlet thành 99 và nó hoạt động tốt, mysqld bắt đầu trước. Cảm ơn.
jpangamarca

7

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ó.


Tôi ngạc nhiên khi hầu hết các distro vẫn sử dụng hệ thống này; hệ thống tốt hơn như rcorderđã được khoảng một thời gian.
Chris S

Tôi ghen tị với năng lượng mặt trời svc, nhưng có thể làm mà không cần những thứ xml
coredump

Đây là vị trí trên. Tuy nhiên, tùy thuộc vào bản phân phối của bạn, bạn có thể có các cách khác nhau để thay đổi giá trị này - vì vậy hãy đọc tài liệu cụ thể cho bản phân phối của bạn.
Andrew M.

1
Một số bản phân phối, chẳng hạn như Ubuntu, sử dụng Upstart ( Wikipedia ).
Tạm dừng cho đến khi có thông báo mới.

7

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.

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.