sysctl
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
![]() | |
Написано в | С |
---|---|
Операционная система | Unix-подобный (BSD) |
Тип | Конфигурация системы |
sysctl — это программный механизм в некоторых Unix-подобных операционных системах, который считывает и изменяет атрибуты ядра системы , такие как номер версии, максимальные ограничения и настройки безопасности. [1] Он доступен как системный вызов для скомпилированных программ, так и команда администратора для интерактивного использования и создания сценариев. Linux дополнительно предоставляет sysctl как виртуальную файловую систему .
БСД
[ редактировать ]В BSD эти параметры обычно представляют собой объекты в базе управляющей информации (MIB), которые описывают настраиваемые ограничения, такие как размер сегмента общей памяти, количество потоков, которые операционная система будет использовать в качестве клиента NFS , или максимальное количество процессов. в системе; или описать, включить или отключить поведение, такое как переадресация IP , ограничения безопасности для суперпользователя («уровень безопасности») или выходные данные отладки. [1]
В OpenBSD и DragonFly BSD sysctl также используется в качестве транспортного уровня для инфраструктуры hw.sensors для мониторинга оборудования . [2] тогда как NetBSD использует системный вызов ioctl для своего аналога sysmon envsys . И sysctl, и ioctl — это два системных вызова , которые можно использовать для добавления дополнительных функций ядра без добавления еще одного системного вызова ; [3] например, в 2004 году в OpenBSD 3.6, когда была представлена утилита tcpdrop , sysctl использовался в качестве основного системного вызова. [3] [4] Во FreeBSD , хотя и нет структуры датчиков, отдельные датчики температуры и другие датчики по-прежнему обычно экспортируются через дерево sysctl через Newbus , например, как в случае с aibs(4)
драйвер, доступный во всех четырех системах BSD, включая FreeBSD. [5] [6] [7]
В BSD для использования программами обычно предоставляется системный вызов или оболочка системного вызова, а также административная программа и файл конфигурации (для установки настраиваемых параметров при загрузке системы ).
Эта возможность впервые появилась в 4.4BSD . Его преимущество перед жестко запрограммированными константами заключается в том, что изменения параметров можно производить динамически, без перекомпиляции ядра.
Исторически, хотя сами переменные ядра можно было изменить с помощью sysctl, элементы, составляющие MIB дерева sysctl, были жестко закодированы во время компиляции, и по состоянию на 2019 год это в основном все еще имеет место в OpenBSD (за некоторыми исключениями, такими как hw.sensors , который управляет и предоставляет собственное динамическое поддерево). Во FreeBSD есть «внутренняя магия sysctl» для динамического управления деревом sysctl с 1995 года; В NetBSD с декабря 2003 года имеется собственная реализация динамического дерева системных систем. [5] [6]
Линукс
[ редактировать ]В Linux механизм интерфейса sysctl также экспортируется как часть procfs под именем /proc/sys (не путать с каталогом /sys каталог ). Эта разница означает, что проверка значения какого-либо параметра требует открытия файла в виртуальной файловой системе , чтения его содержимого, его анализа и закрытия файла. Системный вызов sysctl существует в Linux, но он устарел и не имеет функции-обертки в glibc ; обычно он недоступен из-за того, что во многих дистрибутивах ядро настроено без CONFIG_SYSCTL_SYSCALL; поэтому не рекомендуется к использованию. [8]
Примеры
[ редактировать ]Когда включена переадресация IP, ядро операционной системы будет действовать как маршрутизатор . Во FreeBSD , NetBSD , OpenBSD , DragonFly BSD и Darwin / Mac OS X параметр net.inet.ip.forwarding можно установить на 1, чтобы включить это поведение. В Linux этот параметр называется net.ipv4.ip_forward .
В большинстве систем команда sysctl -w Параметр =1 включит определенное поведение. Это сохранится до следующей перезагрузки. Если это поведение должно быть включено при каждой загрузке системы, строка параметр =1 можно добавить/перезаписать в файл /etc/sysctl.conf . Кроме того, некоторые переменные sysctl невозможно изменить после загрузки системы. Эти переменные (в зависимости от переменной, версии и версии BSD) должны быть установлены статически в ядре во время компиляции или установлены в /boot/loader.conf .
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Jump up to: а б «sysctl(7) — переменные системной информации» . Перекрестная ссылка BSD . НетБСД .
- ^ Константин Александрович Муренин (17 апреля 2007 г.). Универсальное взаимодействие с аппаратными мониторами микропроцессорной системы . Материалы Международной конференции IEEE по сетям, зондированию и управлению 2007 г., 15–17 апреля 2007 г. Лондон, Великобритания: IEEE . стр. 901–906. дои : 10.1109/ICNSC.2007.372901 . ISBN 978-1-4244-1076-7 . IEEE ICNSC 2007, стр. 901–906.
- ^ Jump up to: а б Федерико Бьянкуцци (28 октября 2004 г.). «OpenBSD 3.6 Live» . ONLamp . О'Рейли Медиа . Архивировано из оригинала 29 октября 2004 г. Проверено 20 марта 2019 г.
- ^ Маркус Фридл (2004). "tcpdrop.c" . Перекрестная ссылка BSD . OpenBSD .
- «tcpdrop — разорвать TCP-соединение». Сервер страниц руководства OpenBSD .
- ^ Jump up to: а б Муренин Константин Алексеевич; Рауф Бутаба (17 марта 2009 г.). «8.3. Структура датчиков в FreeBSD CVS». Структура аппаратных датчиков OpenBSD (PDF) . Материалы AsiaBSDCon 2009, 12–15 марта 2009 г. Токийский научный университет, Токио, Япония (опубликовано 14 марта 2009 г.). Архивировано из оригинала 20 июня 2010 г. Проверено 4 марта 2019 г.
{{cite conference}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка ) - ^ Jump up to: а б Константин Александрович Муренин (21 мая 2010 г.). «8.3. Структура датчиков в FreeBSD CVS». Аппаратные датчики OpenBSD — мониторинг окружающей среды и управление вентиляторами ( диссертация на степень магистра математики ). Университет Ватерлоо : UWSpace. hdl : 10012/5234 . Идентификатор документа: ab71498b6b1a60ff817b29d56997a418.
- ^ «aibs(4) — ASUSTeK AI Booster ACPI ATK0110, датчик напряжения, температуры и вентилятора» . Перекрестная ссылка BSD . FreeBSD . 2010.
- «aibs — ASUSTeK AI Booster ACPI ATK0110, датчик напряжения, температуры и вентилятора». Страницы руководства FreeBSD .
- ^ «sysctl(2): чтение/запись системных параметров» . man7.org . 15 сентября 2017 г. Проверено 4 января 2018 г.
Внешние ссылки
[ редактировать ]- sysctl(2) в OpenBSD
- sysctl(3) во FreeBSD, NetBSD, DragonFly BSD
- sysctl(7) в NetBSD
- sysctl(8) в *BSD
- sysctl(9) во FreeBSD, DragonFly и NetBSD
- Linux программиста Руководство – Администрирование и привилегированные команды –
- Linux программиста Руководство – Системные вызовы –
- sysctl-explorer.net — инициатива по облегчению доступа к справочной документации sysctl Linux.