Znajdź wartości domyślne sysctl? (bez ponownego uruchamiania)


10

I zostały zmodyfikowane wartości net.core.rmem_maxz sysctl, i teraz chciałbym ustawić go z powrotem do wartości domyślnej.

Jeśli zrestartuję komputer, net.core.rmem_maxwrócę do jego wartości domyślnej (ponieważ nie jest zastępowana /etc/sysctl.conf), ale czy mogę znać tę wartość bez ponownego uruchamiania?

Idealnie powinienem był pobiec, sysctl net.core.rmem_maxaby odczytać wartość przed jej modyfikacją, ale zapomniałem ...

Odpowiedzi:


4

Zasadniczo nie jest to możliwe: jądro nie zachowuje oryginalnych wartości (przynajmniej pod Linuksem tak nie jest, i prawdopodobnie dotyczy to innych wariantów uniksowych). Wartość ustawienia jest przechowywana w zmiennej; po zmianie ustawienia pamięć zawierająca zmienną jest nieodwracalnie aktualizowana.

W przypadku większości ustawień początkowa wartość zmiennej jest stałą, która jest określana w czasie kompilacji i przechowywana w pliku binarnym jądra. Możesz więc w zasadzie sprawdzić plik binarny jądra, aby znaleźć wartość domyślną. Będziesz musiał zlokalizować symbol odpowiadający interesującemu ustawieniu i podążać za adresem tego symbolu w pliku binarnym jądra. Uruchomienie jądra na maszynie wirtualnej byłoby mniej pracy.

W przypadku większości ustawień możesz zajrzeć do źródła jądra - kernel/sysctl.ci innych plików. Zobaczysz definicje takie jak

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

(in net/core/sysctl_net_core.c), z którego można śledzić inicjalizację sysctl_rmem_maxzmiennej . Podczas gdy ten jest inicjalizowany ze stałej, jego rozwinięcie zajmuje sporo czasu.


0

Na moim komputerze OpenBSD plik /etc/sysctl.conf zawiera listę domyślnych wartości sysctl, ale ta lista nie jest wyczerpująca.

Prawdopodobnie najlepszym sposobem jest odczytanie kodu sysctl lub poproszenie znajomego, który używa tego samego systemu operacyjnego o jego wartości :)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.