Jak odczytać i zmienić wartość parametrów jądra za pomocą Sysctl
- 4781
- 33
- Tomasz Szatkowski
Sysctl to narzędzie zainstalowane domyślnie we wszystkich nowoczesnych dystrybucjach Linux. Jest używany zarówno do czytania, jak i zapisu wartości parametrów jądra w czasie wykonywania; Dostępne parametry to cele wymienione w ramach /Proc
pseudo-filesystem, a konkretnie pod /proc/sys
informator. W tym artykule uczymy się, jak korzystać z tego narzędzia, jak wprowadzać zmiany, utrzymuje się ponownie i jak ładować ustawienia z pliku „ręcznie”.
W tym samouczku się nauczysz:
- Jak odczytać wartość parametrów jądra
- Jak zmodyfikować wartość parametrów jądra w czasie wykonywania
- Jak wprowadzić zmiany, utrzymuje się ponownie
- Jak ręcznie ładować ustawienia z pliku
Zastosowane wymagania i konwencje oprogramowania
Kategoria | Wymagania, konwencje lub wersja oprogramowania |
---|---|
System | Niezależny dystrybucja |
Oprogramowanie | Sysctl |
Inny | Przywileje korzeniowe do modyfikowania parametrów jądra |
Konwencje | # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika |
Czytanie wartości jądra
Zachowanie jądra Linux można zmienić, modyfikując wartość niektórych parametrów, nawet w czasie wykonywania. Dostępne parametry to te, do których można uzyskać dostęp za pośrednictwem /Proc
pseudo-filesystem, pod /proc/sys
informator. Możemy użyć drzewo
rozkaz, aby dowiedzieć się o jej treści:
$ Tree /Proc /sys /proc /sys ├wią ├t │t vsyscall32 ├wią │t └wielka fips_enabled ├─ debugowanie │ ├─lok Wyjątek │ └─lok │ ├── CDROM │ │ ├wiąt Autokloza │ │ ├t Autoeject │ │ ├├t Check_Media │ │ ├─ │ │ ├─roz ─ max-user-freq │ ├── i915 │ │ ├── oa_max_sample_rate │ │ └── perf_stream_paranoid │ ├── mac_hid │ │ ├── mouse_button2_keycode │ │ ├── mouse_button3_keycode │ │ └── mouse_button_emulation │ ├── RAID │ ├ ├── Speed_Limit_max │ │ └── Speed_limit_min │ ├── Scsi │ │ └─lok Logging_Level │ └─t tty │ └── ldisc_autoload […]
Wyjście powyższego polecenia jest obcięte z oczywistych powodów, ale daje wyobrażenie o tym, o czym mówimy. Kiedy sysctl jest wywoływany z -A
opcja (skrót --Wszystko
), drukuje wartość wszystkich dostępnych parametrów jądra:
$ sysctl sysctl -a abi.vSyscall32 = 1 krypto.fips_enabled = 0 debug.Wyjątkowy Trace = 1 debugowanie.KPROBES-optymalizacja = 1 dev.CDROM.autoklose = 1 dev.CDROM.Autoeject = 0 Dev.CDROM.Check_Media = 0 […]
Jeśli chcemy odczytać wartość określonego parametru, musimy tylko wywołać Sysctl
i podaj nazwę parametru, którego chcemy sprawdzić wartość jako argument. Na przykład, aby odczytać bieżącą wartość nalotu Speed_limit_max
parametr, który jest napisany w /proc/sys/dev/raid/speed_limit_max
Plik, uruchomimy:
$ sysctl dev.nalot.Speed_limit_max dev.nalot.Speed_limit_max = 200000
Podczas używania Sysctl
W skrypcie lub podczas korzystania z jego wyjścia w rurociągu możemy chcieć uruchomić go z -N
opcja, która jest krótką formą (--wartości
). Ta opcja tworzy tylko bieżącą wartość żądanego parametru
powrócił, gdy wykonywane jest zapytanie; Nazwa kluczowa jest pominięta:
$ sysctl -n dev.nalot.Speed_limit_max 200000
Modyfikowanie parametrów jądra
Tak jak możemy odczytać parametry jądra, możemy zmienić ich wartości w czasie wykonywania za pomocą Sysctl
. Składnia do użycia, gdy chcemy wykonać taką akcję, jest bardzo prosta:
SYSCTL Zmienna = wartość
Po prostu wywołujemy polecenie i podajemy nazwę zmiennej i wartość, którą chcemy przypisać. Chociaż nie potrzebujemy podwyższonych uprawnień, aby odczytać wartość parametrów jądra, musimy poprzedzić polecenie sudo (lub uruchomić je jako użytkownika root bezpośrednio), aby zmienić ich wartości. Załóżmy, że chcemy zmienić wartość dev.CDROM.Autoeject
i ustaw go na 1; Napisalibyśmy:
$ sudo sysctl dev.CDROM.Autoeject = 1
Kiedy zmieniamy wartość parametru jądra, jeśli polecenie jest wykonywane poprawnie, ustawienie wartości jest wyświetlane do Stdout (standardowe wyjście). Jako wyjście polecenia użyte w powyższym przykładzie zobaczymy:
dev.CDROM.Autoeject = 1
Takie zachowanie można zmienić, wywołując sysctl z -Q
opcja (skrót --cichy
).
Wprowadzanie zmian utrzymuje się na ponownym uruchomieniu
Modyfikacja, którą dokonujemy z Sysctl w czasie wykonywania, nie jest trwałe i zostanie utracone po ponownym uruchomieniu systemu. Aby wprowadzić zmiany, przetrwaj takie zdarzenie, musimy je napisać w pliku w jednym z dedykowanych katalogów. Co to są
katalogi? W kolejności priorytetu:
- /etc/sysctl.D
- /run/sysctl.D
- /usr/lib/sysctl.D
Pliki hostujące ustawienia muszą mieć .conf
rozszerzenie i są sortowane i ładowane przy rozruchu przez Systemd-Sysctl
usługa, w leksykograficzne zamówienie, bez względu na katalog, w którym są umieszczone.
Jeśli plik o tej samej nazwie istnieje w wielu katalogach, załadowane zostaną tylko ustawienia istniejące w katalogu z wyższym priorytetem. Zasadniczo oznacza to, że jeśli chcemy całkowicie zastąpić plik, powinniśmy umieścić plik o tej samej nazwie w katalogu o wyższym priorytecie; Jeśli chcemy zmienić określone ustawienie, moglibyśmy napisać je w pliku o nazwie, która spowoduje załadowanie go po tym, w którym parametr jest pierwotnie ustawiony.
/usr/lib/sysctl.D
Katalog ma na celu hosting ustawień „dostawcy”, rzadko powinniśmy zmienić jego treść. W zdecydowanej większości przypadków chcemy umieścić nasze pliki w obrębie /etc/sysctl.D
katalog, który jest zarezerwowany dla wprowadzonych zmian
przez administratora systemu.
Zobaczmy przykład. Załóżmy, że chcemy zmienić jądro Zakochanie wartość. Jak wiemy, wartość tego parametru określa, jak często jądro Linux kopiuje Baran Treść do przestrzeni swapowej. Zakres wartości, które można przypisać do tego parametru 0
Do 100
: Wyższa wartość oznacza częstsze i agresywne użycie zamiany. Aby na stałe zmienić wartość tego parametru, tworzymy /etc/sysctl.D/99-SWAPPINESS.conf
plik; Wewnątrz piszemy:
Vm.Swapsiness = 1
Ponieważ, jak powiedzieliśmy, pliki są ładowane w kolejności leksykograficznej, ze względu na swoją nazwę, możemy być pewni, że plik zostanie ostatnio załadowany, a zatem ustawienie zostanie zastosowane zgodnie z oczekiwaniami.
Załaduj ustawienia z pliku ręcznie
Ponieważ tutaj widzieliśmy, jak zmienić wartość parametrów jądra w czasie wykonywania i jak wprowadzić zmiany, utrzymuje się ponownie, pisząc je w plikach z .conf
rozszerzenie. Co jeśli chcemy załadować ustawienia zapisane w pliku „ręcznie”, bez konieczności ponownego uruchomienia systemu i bez ponownego załadunku Systemd-Sysctl
praca? Wszystko, co musimy zrobić, to wywołać Sysctl z -P
opcja (--obciążenie
) i przejdź ścieżkę pliku hosting Ustawienia jako argument. Załóżmy, że chcemy załadować zawartość /etc/sysctl.D/99-SWAPPINESS.conf
plik, który utworzyliśmy w poprzednim przykładzie; Bieglibyśmy:
$ sudo sysctl -p /etc /sysctl.D/99-SWAPPINESS.conf
Jeśli sysctl jest wywoływany z -P
opcja, ale nie podano żadnych argumentów, ładuje ustawienia z /etc/sysctl.conf
plik (symbolizja, która wskazuje na ten plik, nazwany 99-SYSCTL.conf
istnieje w /etc/sysctl.D
informator).
Wnioski
W tym artykule nauczyliśmy się korzystać z Sysctl narzędzie do odczytania i zmiany wartości niektórych parametrów jądra w czasie wykonywania. Widzieliśmy również, jak wprowadzić zmiany w tych parametrach, utrzymuje się ponownie, pisząc je w plikach z .conf
rozszerzenie, które powinno umieścić w określonych katalogach, i jak ładować ustawienia napisane w pliku „ręcznie”. Zmieniając wartość parametrów jądra, możemy dostosować nasz system i sprawić, że działa dokładnie tak, jak potrzebujemy. Możemy na przykład, jak widzieliśmy w poprzednim samouczku, włączyć wszystkie lub niektóre funkcje SYSRQ.
Powiązane samouczki Linux:
- Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
- Rzeczy do zainstalowania na Ubuntu 20.04
- Mastering Bash Script Loops
- Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
- Jak zoptymalizować żywotność baterii laptopa za pomocą TLP na Linux
- Samouczek debugowania GDB dla początkujących
- Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
- Jak często musisz ponownie uruchomić serwer Linux?
- Jak podwójnie rozruch Kali Linux i Windows 10
- Zagnieżdżone pętle w skryptach Bash