В начало → Linux не для идиотов → Интерфейс sysctl |
Ядро содержит очень много параметров, от которых зависит его производительность и которые могут изменять алгоритмы его работы. Для того, чтобы иметь возможность узнавать и изменять эти параметры, в UNIX был разработан интерфейс sysctl.
Виртуальная файловая система procfs содержит каталог sys
с деревом подкаталогов и файлов. Содержимое каждого из этих файлов можно прочесть, например, командой cat, или записать в такой файл новое значение командой echo:
$
cat /proc/sys/kernel/shmmax
33554432$
echo 67108864 >/proc/sys/kernel/shmmax
$
cat /proc/sys/kernel/shmmax
67108864
Команда sysctl предназначена для того, чтобы избежать необходимости использовать прямой доступ к этим файлам, и предоставить возможность
автоматизации установки таких параметров при загрузке системы. На самом же деле, команда sysctl просто читает или записывает значения в файлы из каталога /proc/sys
, т.е. если системный администратор устанавливает с помощью команды sysctl значение некоторого параметра, фактически он просто записывает это значение в соответствующий файл. Существует однозначное
соответствие между именем параметра и именем файла, через который его можно изменить: если посмотреть вывод sysctl -a, можно увидеть, что параметры в большинстве своем именуются несколькими мнемоническими аббревиатурами, разделенными точками:
$sysctl -a | grep mem
net.ipv4.tcp_rmem = 4096 87380 174760
net.ipv4.tcp_wmem = 4096 16384 131072
net.ipv4.tcp_mem = 24576 32768 49152
net.ipv4.igmp_max_memberships = 20
net.core.optmem_max = 10240
net.core.rmem_default = 108544
net.core.wmem_default = 108544
Если в имени параметра заменить точки на символ разделителя пути (символ “/”), и к началу получившейся строки добавить /proc/sys/
– то мы получим имя файла, через который можно изменить или прочесть значение соответствующего параметра.
Если системному администратору необходимо при каждой загрузке изменять некоторые параметры через интерфейс sysctl, то список
параметров и их значений можно записать в конфигурационный файл /etc/sysctl.conf
, который прочитывается при каждой загрузке системы.
В начало → Linux не для идиотов → Интерфейс sysctl |