Sysctl - Sysctl

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.

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

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

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

внешняя ссылка