Назад | Перейти на главную страницу

sysctl против записи непосредственно в / proc / *

На типичной машине с 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 это утилита для взаимодействия с /proc. В общем, они делают то же самое. Я предполагаю, что годы (десятилетия?) Назад единственный способ настроить параметры ядра заключался в редактировании "файлов" в /proc вручную и sysctl появился позже как более цивилизованный способ поиска и изменения параметров ядра.

Следует отметить, что правки в /proc не переживают перезагрузки. Это удобно, если вы экспериментируете. Файл /etc/sysctl.conf это место для хранения ваших sysctl изменения, которые вы хотите сохранить при загрузке. Если вам действительно нравится редактировать файлы, вы можете просто внести там свои изменения и вызвать sysctl -p для выполнения изменений.