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
это еще один слой над чем-то, что мы можем контролировать напрямую, я думаю, что используя его, мы подвергаем себя потенциальным ошибкам, которых в противном случае можно избежать путем прямой записи в файлы.
1 ответ
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
выполнить изменения.