На типичной машине с Linux вы можете изменить конфигурацию ядра, изменив файлы, расположенные в /proc/*
.
Например, для IPv6 accept_dad
параметр конкретного сетевого интерфейса (скажем, eth0
), вы должны изменить следующий файл:
/proc/sys/net/ipv6/conf/eth0/accept_dad
Но, как я недавно обнаружил, есть широко распространенный инструмент, sysctl
, который имеет ту же цель и работает так:
sysctl -w net.ipv6.conf.eth0.accept_dad=1
У меня вопрос, когда мы должны использовать какой инструмент? Мой инстинкт подсказывает, что если вы знаете, что делаете, вы должны писать в файл напрямую, но если вам нужны проверки, а что нет, вы должны использовать sysctl
.
поскольку sysctl
это еще один слой над чем-то, что мы можем контролировать напрямую, я думаю, что, используя его, мы подвергаем себя потенциальным ошибкам, которых в противном случае можно избежать путем прямой записи в файлы.
sysctl
это инструмент для чтения и изменения различных атрибутов ядра. Он доступен во многих Unix-подобных операционных системах, включая, например, не только Linux, но также OpenBSD и FreeBSD. sysctl
обычно доступен как как команда оболочки, так и как системный вызов.
В Linux sysctl
механизм дополнительно выставлен в составе procfs виртуальная файловая система под /proc/sys
.
Обратите внимание, что sysctl
системный вызов устарело в Linux; рекомендуется использовать /proc/sys
вместо этого (напрямую или через sysctl
команда оболочки).
Ссылки:
sysctl
системный вызов в Linuxsysctl
команда оболочки в Linuxsysctl
это утилита для взаимодействия с /proc
. В общем, они делают то же самое. Я предполагаю, что годы (десятилетия?) Назад единственный способ настроить параметры ядра заключался в редактировании "файлов" в /proc
вручную и sysctl
появился позже как более цивилизованный способ поиска и изменения параметров ядра.
Следует отметить, что правки в /proc
не переживают перезагрузки. Это удобно, если вы экспериментируете. Файл /etc/sysctl.conf
это место для хранения ваших sysctl
изменения, которые вы хотите сохранить при загрузке. Если вам действительно нравится редактировать файлы, вы можете просто внести там свои изменения и вызвать sysctl -p
для выполнения изменений.