10 августа 2009 - 07:19
«Вскрытие» Mac OS X продолжается полным ходом. Сегодня мои руки добрались до так называемых «системных переменных». Как всегда чувствуется BSD-основа системы. Изменение значений этих переменных позволяет более тонко производить настройку и оптимизацию работы всей системы в целом и ее отдельных компонентов. Никто не заставляет вас вносить изменения в значения этих переменных, но иногда возникают ситуации, когда просто необходимо произвести более тонкую настройку системы, например, на высоко нагруженном сервере.
Для работы с системными переменными существует специальный интерфейс (утилита, программа) которая называется sysctl.
sysctl — это интерфейс, позволяющий вам вносить изменения в работающую систему Mac OS X. Эти изменения касаются многих опций стека TCP/IP, виртуальной памяти и прочих параметров системы. Опытный системный администратор может использовать их для существенного увеличения производительности. Более пяти тысяч системных переменных могут быть прочитаны и записаны с помощью sysctl.
По своей сути, sysctl выполняет две функции: чтение и изменение настроек системы. Для просмотра всех доступных для чтения переменных:
% sysctl -a
После указанной команды, на экране проскочит очень длинный список, состоящий из всех системных переменных. Чтобы прочитать определённую переменную, например, kern.maxproc, введите:
% sysctl kern.maxproc
kern.maxproc: 532
Для присвоения значения переменной, используйте выражение вида -w переменная=значение
:
# sudo sysctl -w kern.maxfiles=5000
kern.maxfiles: 2088 -> 5000
Изменяемые с помощью sysctl переменные обычно принимают значения либо строкового, либо целого, либо булевого типа. Переменные булевого типа могут принимать два значения (1 (истина) и 0 (ложь)).
Все системные переменные разделены на категории:
- kern — переменные отвечающие за ядро системы
- vfs — переменные отвечающие за виртуальную файловую систему
- hw — переменные отвечающие за аппартную составляющую или попросту железо
- user — переменные отвечающие за пользовательское окружение
- vm — переменные отвечающие за виртуальную память
- net — переменные отвечающие за сетевые настройки
- debug — отладочные переменные
- machdep — видимо тоже переменные ядра
- security — переменные отвечающие за безопасность
Внимательное изучение вывода команды, позволит более или менее понять назначение тех или иных переменных.
Узнать подробнее о системных переменных Вы всегда сможете на просторах интернета, либо посетив BSD-портал, где данная тема обсуждается довольно глубоко.
ВНИМАНИЕ: помните, что бессмысленное изменение значений некоторых переменных может привести к катастрофическим последствиям. Посему будьте предельно внимательны и осторожны.