Sysctl – это утилита, при помощи которой root-пользователь может управлять настройками ядра в BSD и Linux «на горячую», то есть на работающей системе. Также с ее помощью можно читать, какие параметры заданы по умолчанию, менять их и подстраивать под свои нужды. В этой статье мы детально разберемся, что такое sysctl, как она работает, какие настройки с ее помощью можно менять и пр.
Ядро – это база, на которой работает операционная система. Оно отвечает за обеспечение доступа различным приложениям к ресурсам компьютера (оперативной памяти, процессорного времени, аппаратному обеспечению, файловой системе, протоколам передачи данных и пр.). В большинстве современных ОС (Ubuntu, Debian, CentOs и пр.) его не нужно собирать самостоятельно, как это было раньше. Вы просто устанавливаете операционную систему, и она работает. Настройки ядра при этом являются стандартными: они подходят для большинства ситуаций, поэтому администраторы их практически не меняют.
Зачем вообще менять ядро? Дело в том, что администраторы могут сталкиваться с различными проблемами при выполнении определенных задач. Например, настроить сетевой стек, установить параметры распределения памяти или процессорного времени, выставить приоритеты и пр. Изменить эти значения можно либо при сборке ядра (но при установке готового дистрибутива это не делается), при загрузке системы или «на лету». Третий вариант зачастую наиболее практичный. Правильно настроив систему, можно распределить процессы на высоконагруженных серверах, защитить их от DDoS-атаки и пр.
Для того чтобы посмотреть настройки ядра, вам необходимо ввести в консоль команду с параметром -а (выглядит это как “sysctl -a”). Система выдаст вам список, состоящий из сотен строк, в каждой из которых имеются определенный параметр и его значение. Любой пользователь системы может просматривать настройки ядра, но поменять его может только тот, у кого есть права root.
Параметр -а выводит весь список настроек. Если вы не хотите просматривать его целиком, то можно обратиться к нужной настройке напрямую. Например, если вы хотите изменить значение подкачки, то вам нужно ввести в консоль “sysctl vm.swappiness”. Она выдаст вам строку типа “vm.swappiness = 50”, в которой цифра после знака равенства и будет необходимым числом.
Надо понимать, что sysctl считывает информацию из так называемого виртуального каталога, расположенного по адресу /proc/sys, который содержит файлы с данными. Именно в них и хранятся действующие настройки ядра. Соответственно, их также можно открыть через консоль. В нашем случае, если мы рассматриваем значение подкачки, команда будет выглядеть “cat/proc/sys/vm/swappiness”. Результат вывода будет одинаковым.
Первым делом вам нужно посмотреть, какое именно значение уже задано, и подумать, на что вы хотите его изменить. Далее в консоль нужно ввести команду, которая выглядит как “sysctl -w parameter = переменная”. После знака равенства надо поставить нужное значение. Если там будет пробел или спецсимволы, то надо взять их в “”(двойные кавычки). Допускается передавать несколько значений одной командой. Это удобно, если вносятся массовые изменения.
Обратите внимание, что использовать подобные команды нужно с осторожностью, понимая, что вы делаете, особенно если вы совершаете манипуляции на рабочей производственной системе. Если что-то пойдет не так, то ядро станет нестабильным, что приведет к проблемам с работой. Учитывайте, что сделанные командой sysctl изменения начинают работать сразу, но при этом они не сохраняются в файлах. Соответственно, при перегрузке вернутся предыдущие значения. Чтобы изменить параметры навсегда (установить их по умолчанию при запуске системы), нужно внести их в каталог конфигурации (файлы), расположенный по адресу /etc/sysctl.conf. Также можно воспользоваться командой echo. Это будет выглядеть следующим образом: echo1>/proc/sys/net/ipv4/ip_forward. После выполнения эта команда активирует пересылку пакетов ipv4.
Для рядовых пользователей эта команда вообще не нужна – выставленные по умолчанию значения работают вполне адекватно. Но администраторам на высоконагруженных серверах приходится использовать ее довольно часто. Обычно работа ведется со следующими параметрами:
Это лишь часть команд, которые меняют свойства ядра. Детальнее изучить их можно по инструкциям или специализированной литературе.