Откуда sysctl -a печатает все параметры ядра?

Если вы не состоите в браке с sed, это хорошая работа для perl: здесь я также предоставляю возможность указать, какие слова вы хотите поменять местами

, если "файл" содержит

I 4want5to%change
#One two three four
Spring&summer^winter

Затем эта команда

$ perl -lnse '
    BEGIN {
        $i = ($first - 1) * 2;
        $j = ($second - 1) * 2;
    }
    @tokens = /([[:alpha:]]*)([^[:alpha:]]*)/g;
    ($tokens[$i], $tokens[$j]) = ($tokens[$j], $tokens[$i]);
    print join "", @tokens;
' -- -first=1 -second=3 file

выводит

to 4want5I%change
two#One  three four
winter&summer^Spring
4
05.04.2017, 02:00
2 ответа

Настройки Sysctl хранятся в ядре. Эти настройки влияют на поведение ядра; по сути, это переменные ядра, которые программы, работающие в системе, могут читать и записывать.

Когда ядро загружается, каждый параметр sysctl имеет значение по умолчанию. Это значение может быть изменено в любое время программой, например, командой sysctl, или, в Linux, путем записи в соответствующий файл в /proc/sys.

Файл /etc/sysctl.conf не определяет значение настроек во время выполнения. Он используется только во время загрузки, чтобы изменить некоторые настройки по сравнению со значением по умолчанию, скомпилированным в ядро. Если вы внесли некоторые изменения в /etc/sysctl.conf, вы можете применить их в целом, перезапустив "службу" sysctl - служба sysctl не соответствует запущенному процессу, это псевдослужба, которая просто загружает настройки в ядро при его запуске.

Если вы хотите изменить настройки так, чтобы значение сохранялось при перезагрузках, добавьте их в /etc/sysctl.conf. Чтобы временно применить настройку или опробовать ее, используйте sysctl или echo ... >/proc/sys/....

2
27.01.2020, 20:57

How to know each parameter if it is dynamic or static?

Все параметры ядра в sysctlявляются динамическими. Когда вы проверяете число в зависимости от версии вашего ядра sysctl -a | wc -l, оно должно быть больше 1000.

Для чтения значений у вас есть несколько интеллектуальных опций:

sysctl net.ipv4.ip_forward          # display specific parameter
sysctl net.ipv4                     # display all net.ipv4.* parameters
sysctl -a                           # display all parameters

А для постоянной записи значений вы можете использовать /etc/sysctl.confили любой файл конфигурации в каталоге /etc/sysctl.d/, и после обновления файла конфигурации вам необходимо перезагрузить файл конфигурации.

sysctl -p [filename]

Конечно, вы можете просто перезапустить «службу» sysctl, как указал Жиль.

From where does sysctl -a print all kernel parameters?

Из псевдофайловой системы procfs (man procfs ). Он предоставляет интерфейс к структурам данных ядра. Обычно он автоматически монтируется системой в /proc.

1
27.01.2020, 20:57

Теги

Похожие вопросы