stringtranslate.com

sysctl

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)доступным во всех 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 .

Смотрите также

Рекомендации

  1. ^ ab "sysctl(7) — переменные системной информации". Перекрестная ссылка BSD . НетБСД .
  2. ^ Константин А. Муренин (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.
  3. ^ аб Федерико Бьянкуцци (28 октября 2004 г.). «OpenBSD 3.6 Live». ONLamp . О'Рейли Медиа . Архивировано из оригинала 29 октября 2004 г. Проверено 20 марта 2019 г.
  4. ^ Маркус Фридл (2004). "tcpdrop.c". Перекрестная ссылка BSD . OpenBSD .
    • «tcpdrop — разорвать TCP-соединение». Сервер страниц руководства OpenBSD.
  5. ^ аб Константин А. Муренин; Рауф Бутаба (17 марта 2009 г.). «8.3. Структура датчиков в FreeBSD CVS». Структура аппаратных датчиков OpenBSD (PDF) . Материалы AsiaBSDCon 2009, 12–15 марта 2009 г. Токийский научный университет, Токио, Япония (опубликовано 14 марта 2009 г.). Архивировано из оригинала 20 июня 2010 г. Проверено 4 марта 2019 г.{{cite conference}}: CS1 maint: bot: original URL status unknown (link)
  6. ^ аб Константин А. Муренин (21 мая 2010 г.). «8.3. Структура датчиков в FreeBSD CVS». Аппаратные датчики OpenBSD — мониторинг окружающей среды и управление вентиляторами ( диссертация на степень магистра математики ). Университет Ватерлоо : UWSpace. hdl : 10012/5234. Идентификатор документа: ab71498b6b1a60ff817b29d56997a418.
  7. ^ «aibs (4) — ASUSTeK AI Booster ACPI ATK0110, датчик напряжения, температуры и вентилятора» . Перекрестная ссылка BSD . FreeBSD . 2010.
    • «aibs — ASUSTeK AI Booster ACPI ATK0110, датчик напряжения, температуры и вентилятора». Страницы руководства FreeBSD.
  8. ^ «sysctl(2): чтение/запись системных параметров». man7.org . 15 сентября 2017 г. Проверено 4 января 2018 г.

Внешние ссылки