В началоLinux не для идиотов → Интерфейс sysctl
Gentoo-doc HOME Пред.: Информация о процессах и файловая система /procВ началоУровень выше: Linux не для идиотовСлед.: Создание процессов

11. Интерфейс 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, который прочитывается при каждой загрузке системы.

Пред.: Информация о процессах и файловая система /procВ началоУровень выше: Linux не для идиотовСлед.: Создание процессов
В началоLinux не для идиотов → Интерфейс sysctl