Системные переменные Mac OS X

OS X
«Вскрытие» Mac OS X продолжается полным ходом. Сегодня мои руки добрались до так называемых «системных переменных». Как всегда чувствуется BSD-основа системы. Изменение значений этих переменных позволяет более тонко производить настройку и оптимизацию работы всей системы в целом и ее отдельных компонентов. Никто не заставляет вас вносить изменения в значения этих переменных, но иногда возникают ситуации, когда просто необходимо произвести более тонкую настройку системы, например, на высоко нагруженном сервере.

Для работы с системными переменными существует специальный интерфейс (утилита, программа) которая называется sysctl.

sysctl — это интерфейс, позволяющий вам вносить изменения в работающую систему Mac OS X. Эти изменения касаются многих опций стека TCP/IP, виртуальной памяти и прочих параметров системы. Опытный системный администратор может использовать их для существенного увеличения производительности. Более пяти тысяч системных переменных могут быть прочитаны и записаны с помощью sysctl.

По своей сути, sysctl выполняет две функции: чтение и изменение настроек системы. Для просмотра всех доступных для чтения переменных:

% sysctl -a

sysctl

После указанной команды, на экране проскочит очень длинный список, состоящий из всех системных переменных. Чтобы прочитать определённую переменную, например, kern.maxproc, введите:


% sysctl kern.maxproc
kern.maxproc: 532

Для присвоения значения переменной, используйте выражение вида -w переменная=значение:


# sudo sysctl -w kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000

Изменяемые с помощью sysctl переменные обычно принимают значения либо строкового, либо целого, либо булевого типа. Переменные булевого типа могут принимать два значения (1 (истина) и 0 (ложь)).

Все системные переменные разделены на категории:

  1. kern — переменные отвечающие за ядро системы
  2. vfs — переменные отвечающие за виртуальную файловую систему
  3. hw — переменные отвечающие за аппартную составляющую или попросту железо
  4. user — переменные отвечающие за пользовательское окружение
  5. vm — переменные отвечающие за виртуальную память
  6. net — переменные отвечающие за сетевые настройки
  7. debug — отладочные переменные
  8. machdep — видимо тоже переменные ядра
  9. security — переменные отвечающие за безопасность

Внимательное изучение вывода команды, позволит более или менее понять назначение тех или иных переменных.

Узнать подробнее о системных переменных Вы всегда сможете на просторах интернета, либо посетив BSD-портал, где данная тема обсуждается довольно глубоко.

ВНИМАНИЕ: помните, что бессмысленное изменение значений некоторых переменных может привести к катастрофическим последствиям. Посему будьте предельно внимательны и осторожны.