Как системный администратор Linux, иногда вам может понадобиться изменить поведение ядра по умолчанию. Например, вам может понадобиться включить волшебный ключ SysRq или увеличить количество подключений, которые будет принимать ядро. Параметры ядра можно задать при сборке ядра, при загрузке системы или во время выполнения.

В этой статье объясняется, как использовать sysctl команду для просмотра и изменения параметров ядра во время выполнения.

Использование sysctlдля просмотра параметров ядра

Чтобы просмотреть все текущие параметры ядра, вызовите sysctlкоманду с -aпараметром:

sysctl -a

Это выведет большой список, который выглядит примерно так, как показано ниже, где каждая строка включает имя параметра и его значение:

abi.vsyscall32 = 1
debug.exception-trace = 1
debug.kprobes-optimization = 1
...

Все пользователи могут просматривать текущие параметры ядра; только пользователь root может изменять их значения.

Вы можете проверить значение одного параметра, передав его имя в качестве аргумента в sysctl. Например, чтобы проверить текущее значение swappiness, введите:

sysctl vm.swappiness
vm.swappiness = 60

Подкачка — это свойство ядра Linux, которое определяет, как часто система будет использовать пространство подкачки.

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

Вы также можете просмотреть значение параметра, отобразив содержимое соответствующего файла. Единственная разница заключается в том, как представлен файл. Например, оба sysctl vm.swappinessи cat /proc/sys/vm/swappinessдадут одинаковый результат. При использовании sysctlкаталога косые черты заменяются точками и proc.sysпредполагается часть.

Использование sysctlдля изменения параметров ядра

Чтобы установить параметр ядра во время выполнения, запустите sysctlкоманду, за которой следует имя и значение параметра в следующем формате:

sysctl -w parameter=value

Если значение содержит пробелы или специальные символы, заключите значение в двойные кавычки. Вы также можете передать несколько parameter=valueпар в одной команде.

Например, чтобы включить пересылку пакетов IPv4, вы должны запустить:

sysctl -w net.ipv4.ip_forward=1

Изменение вступает в силу немедленно, но не является постоянным. После перезагрузки системы загружается значение по умолчанию.

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

sysctl -w net.ipv4.ip_forward=1 >> /etc/sysctl.conf

Другой способ изменить параметры — использовать echo команду для записи настроек в файлы в /proc/sysкаталоге. Например, вместо выполнения приведенной выше команды вы можете использовать:

echo 1 > /proc/sys/net/ipv4/ip_forward

Опция -pпозволяет загрузить настройки из конфигурационного файла:

sysctl -p /etc/sysctl.d/file_name.conf

Когда файл не указан, sysctlчитает /etc/sysctl.confфайл.