sysctl - это программная утилита некоторых Unix-подобных операционных систем, которая считывает и изменяет атрибуты ядра системы, такие как номер версии, максимальные ограничения и настройки безопасности. [1] Он доступен как системный вызов для скомпилированных программ, так и команда администратора для интерактивного использования и написания сценариев. Linux дополнительно предоставляет sysctl как виртуальную файловую систему .
Написано в | C |
---|---|
Операционная система | Unix-подобный (BSD) |
Тип | Конфигурация системы |
BSD
В 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)
драйвером, доступным во всех 4 BSD. системы, включая FreeBSD. [5] [6] [7]
В BSD для использования программами обычно предоставляется системный вызов или оболочка системного вызова, а также административная программа и файл конфигурации (для установки настраиваемых параметров при загрузке системы ).
Эта функция впервые появилась в 4.4BSD . Его преимущество перед жестко запрограммированными константами состоит в том, что изменения параметров можно производить динамически без перекомпиляции ядра.
Исторически, хотя сами переменные ядра могли быть изменены с помощью sysctl, элементы, составляющие MIB дерева sysctl, были жестко закодированы во время компиляции, и по состоянию на 2019 год это в основном все еще имеет место в OpenBSD (за некоторыми исключениями, такими как hw.sensors , который управляет и предоставляет собственное динамическое поддерево). FreeBSD обладает «внутренней магией sysctl» для управления динамическим деревом sysctl с 1995 года; NetBSD имеет собственную реализацию динамического дерева sysctl с декабря 2003 года. [5] [6]
Linux
В 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 parameter = 1 включает определенное поведение. Это будет продолжаться до следующей перезагрузки. Если поведение должно быть включено при каждой загрузке системы, строковый параметр = 1 можно добавить / переписать в файл /etc/sysctl.conf . Кроме того, некоторые переменные sysctl нельзя изменить после загрузки системы. Эти переменные (в зависимости от переменной, версии и разновидности BSD) должны быть либо статически установлены в ядре во время компиляции, либо установлены в /boot/loader.conf .
Смотрите также
- hw.sensors
- ioctl
Рекомендации
- ^ a b "sysctl (7) - системные информационные переменные" . Перекрестная ссылка BSD . NetBSD . Выложите резюме .
- ^ Константин Александрович Муренин (17.04.2007). Обобщенное взаимодействие с аппаратными мониторами микропроцессорной системы . Материалы Международной конференции IEEE 2007 г. по сетям, зондированию и контролю, 15–17 апреля 2007 г. Лондон, Соединенное Королевство: IEEE . С. 901–906. DOI : 10.1109 / ICNSC.2007.372901 . ISBN 978-1-4244-1076-7. IEEE ICNSC 2007, стр. 901–906.
- ^ а б Федерико Бьянкуцци (2004-10-28). «OpenBSD 3.6 Live» . ONLamp . O'Reilly Media . Архивировано из оригинала на 2004-10-29 . Проверено 20 марта 2019 .
- ^ Маркус Фридл (2004). "tcpdrop.c" . Перекрестная ссылка BSD . OpenBSD . Выложите резюме .
- ^ а б Константин А. Муренин; Рауф Бутаба ( 17 марта 2009 г. ). «8.3. Фреймворк датчиков в FreeBSD CVS». Фреймворк аппаратных датчиков OpenBSD (PDF) . AsiaBSDCon 2009 Proceedings, 12–15 марта 2009 г. Токийский университет науки, Токио, Япония (опубликовано 14 марта 2009 г.). Архивировано 21 февраля 2009 г. (PDF) . Проверено 4 марта 2019 .
- ^ а б Константин Александрович Муренин (21.05.2010). «8.3. Фреймворк датчиков в FreeBSD CVS». Аппаратные датчики OpenBSD - мониторинг окружающей среды и управление вентиляторами ( тезис MMath ). Университет Ватерлоо : UWSpace. ЛВП : 10012/5234 . Идентификатор документа: ab71498b6b1a60 ff817 b29d56997a418.
- ^ «aibs (4) - ASUSTeK AI Booster ACPI ATK0110 датчик напряжения, температуры и вентилятора» . Перекрестная ссылка BSD . FreeBSD . 2010. Сложное резюме .
- ^ "sysctl (2): чтение / запись системных параметров" . man7.org . 2017-09-15 . Проверено 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 - Инициатива по облегчению доступа к справочной документации Linux по sysctl