Tìm ra giá trị mặc định sysctl? (không khởi động lại)


10

Tôi đã sửa đổi giá trị của net.core.rmem_maxvới sysctl, và bây giờ tôi muốn đặt nó trở về giá trị mặc định của nó.

Nếu tôi khởi động lại, net.core.rmem_maxsẽ quay trở lại giá trị mặc định của nó (vì nó không bị ghi đè /etc/sysctl.conf), nhưng tôi có thể biết giá trị này mà không cần khởi động lại không?

Lý tưởng nhất là tôi nên chạy sysctl net.core.rmem_maxđể đọc giá trị trước khi sửa đổi nó, nhưng tôi quên ...

Câu trả lời:


4

Nói chung, điều này là không thể: hạt nhân không giữ được các giá trị ban đầu (ít nhất là trong Linux, điều này không đúng và điều này có lẽ đúng với các biến thể unix khác). Giá trị của cài đặt được lưu trữ trong một biến; Khi bạn thay đổi cài đặt, bộ nhớ chứa biến được cập nhật không thể đảo ngược.

Đối với hầu hết các cài đặt, giá trị ban đầu của biến là một hằng số được xác định tại thời gian biên dịch và được lưu trữ trong tệp nhị phân kernel. Vì vậy, về nguyên tắc, bạn có thể kiểm tra nhị phân kernel của mình để tìm giá trị mặc định. Bạn sẽ phải định vị biểu tượng tương ứng với cài đặt bạn quan tâm và theo địa chỉ của biểu tượng đó trong tệp nhị phân kernel. Khởi động kernel của bạn trong một máy ảo sẽ làm việc ít hơn.

Đối với hầu hết các cài đặt, bạn có thể tìm trong nguồn kernel - kernel/sysctl.cvà các tệp khác. Bạn sẽ thấy các định nghĩa như

    {
            .procname       = "rmem_max",
            .data           = &sysctl_rmem_max,
            …
    },

(trong net/core/sysctl_net_core.c), từ đó bạn có thể theo dõi việc khởi tạo sysctl_rmem_maxbiến . Trong khi cái này được khởi tạo từ một hằng số, phải mất khá nhiều thời gian để đọc mã C để mở rộng.


0

Trên máy OpenBSD của tôi, /etc/sysctl.conf liệt kê một loạt các giá trị sysctl mặc định, nhưng danh sách này không đầy đủ.

Có lẽ cách tốt nhất là đọc mã sysctl hoặc hỏi một người bạn đang chạy cùng một hệ điều hành cho các giá trị của mình :)

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.