WikiDer > Sysctl
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Написано в | C |
---|---|
Операционная система | Unix-подобный (BSD) |
Тип | Конфигурация системы |
sysctl это программная утилита некоторых Unix-подобный операционные системы, которые считывают и изменяют атрибуты системы ядро например номер версии, максимальные ограничения и настройки безопасности.[1] Он доступен как системный вызов для скомпилированных программ и команда администратора для интерактивного использования и написания сценариев. Linux дополнительно предоставляет sysctl как виртуальная файловая система.
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, например, как в случае с аибс (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, и Дарвин/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.
Смотрите также
Рекомендации
- ^ а б "sysctl (7) - переменные системной информации". Перекрестная ссылка BSD. NetBSD. Сложить резюме.
- ^ Константин Александрович Муренин (17.04.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.
- ^ а б Федерико Бьянкуцци (2004-10-28). «OpenBSD 3.6 Live». ONLamp. O'Reilly Media. Архивировано из оригинал на 2004-10-29. Получено 2019-03-20.
- ^ Маркус Фридл (2004). "tcpdrop.c". Перекрестная ссылка BSD. OpenBSD. Сложить резюме.
- ^ а б Константин А. Муренин; Рауф Бутаба (2009-03-17). «8.3. Фреймворк датчиков в FreeBSD CVS». Фреймворк аппаратных датчиков OpenBSD (PDF). Слушания AsiaBSDCon 2009, 12–15 марта 2009 г. Токийский университет науки, Токио, Япония (опубликовано 14 марта 2009 г.). В архиве (PDF) из оригинала от 21.02.2009. Получено 2019-03-04.
- ^ а б Константин Александрович Муренин (21.05.2010). «8.3. Фреймворк датчиков в FreeBSD CVS». Аппаратные датчики OpenBSD - мониторинг окружающей среды и управление вентиляторами (MMath Тезис). Университет Ватерлоо: UWSpace. HDL:10012/5234. Идентификатор документа: ab71498b6b1a60 ff817 b29d56997a418.
- ^ "aibs (4) - ASUSTeK AI Booster ACPI ATK0110 датчик напряжения, температуры и вентилятора". Перекрестная ссылка BSD. FreeBSD. 2010. Сложить резюме.
- ^ "sysctl (2): чтение / запись системных параметров". man7.org. 2017-09-15. Получено 2018-01-04.
внешняя ссылка
- 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