Используя файловую систему /proc, можно изменять многие параметры системы без необходимости перезагрузки машины и многое узнать о работе системы. О некоторых полезных командах - далее в этом посте. /proc/scsi/scsi /proc/sys/kernel/acct /proc/sys/kernel/ctrl-alt-del /proc/sys/kernel/panic /proc/sys/kernel/sysrq Вы можете увидеть все переменные, доступные для изменения, используя команду sysctl -a. Хотя нижеследующее замечание относится к другой файловой системе, /sys, я считаю полезным привести здесь один пример. Это смена планировщиков ввода-вывода на лету. Чтобы узнать, какой планировщик стоит сейчас, даём команду: Заменяя sdX на интересующее нас устройство. Текущий планировщик отмечен в квадратных скобках:
Файловая система /proc - это виртуальная файловая система[1], поэтому файлы, которые вы найдете в этом каталоге, на самом деле не занимают места на вашем жестком диске. Это карта, создаваемая ядром и присоединяемая к вашей обычной файловой системе, чтобы обеспечить доступ к настройкам ядра и информации о системе.
Многие программы собирают информацию из файлов в /proc, форматируют их и выводят результат пользователю (top, ps и другие). Также существует специальный подкаталог /proc/sys. Он позволяет вам просматривать параметры ядра и изменять их на лету.
Общие слова
Не стоит открывать эти файлы обычным текстовым редактором - это может нарушить целостность данных или ядро может успеть изменить значения в этих файлах.
Чтобы этого избежать, следует пользоваться командами echo и cat для установки и просмотра содержимого файлов соответственно.
Чтобы передать значение fake в файл /proc/your/file, следует дать команду:echo "fake" > /proc/your/file
Для того, чтобы увидеть значение в файле, используем cat:cat /proc/your/file
В основном в /proc вы найдете файлы read-only за исключением /proc/sys, которая содержит большинство параметров ядра и предназначена для изменения во время работы системы.
получим:
fake
Примеры использования /proc
В каталоге /proc множество файлов, большинство из них - только для чтения, из них можно узнать многое об оборудовании. Но есть файлы и на запись - они позволяют менять на лету параметры работы ядра. Вот некоторые из них:
Позволяет добавить или отключить диск, если он поддерживает горячую замену (SCSI или SATA). Указать ядру на подключение нового диска можно командой:echo "scsi add-single-device w x y z" > /proc/scsi/scsi
Чтобы эта команда работала правильно, вы должны указать параметры значений w, x, y, и z следующим образом:
Этот трюк можно проворачивать не только с дисками: в своё время это пришлось делать мне для подключения многослотового кардиридера.
Чтобы извлечь диск из системы без перезагрузки, размонтируем его и даём команду:echo "scsi remove-single-device w x y z" > /proc/scsi/scsi
Перед тем как ввести эту команду и удалить SCSI диск, убедитесь, что вы отмонтировали файловые системы на этом диске.
Здесь содержатся три конфигурируемых значения, которые управляют подсчётом процессов, основанном на свободном пространстве файловой системы:
Чтобы изменить значения в этом файле, вам следует использовать разделенный список параметров. Значения по умолчанию: 2 4 30
подсчета останавливается.
Для их изменения следует дать командуecho "3 5 40" > /proc/sys/kernel/acct
Эти значения остановят подсчёт, если в файловой системе менее 3 процентов свободного пространства и начнет опять если появится 5 или более процентов. Проверка производится каждые 40 секунд.
Этот файл содержит двоичное значение, которое управляет реакцией системы на комбинацию ctrl+alt+delete. Возможны два значения:
Значение по умолчанию - 0.
Задаёт время в секундах, которое ядро будет ждать перед перезагрузкой если произойдет "kernel panic". Установка в ноль (0) секунд отключит возможность перезагрузки при kernel panic.
Значение по умолчанию - 0.
Включает или выключает возможность использования Волшебной SysRQ-клавишей (Magick System Request Key). Если в ядре она активирована, чаще всего значение в этом файле 1.
Об этой клавише и её возможностях было написано тут.
/proc/sys/vm/swappiness
Этот параметр позволяет регулировать стремление системы сбрасывать данные из памяти в файл подкачки. Чрезмерное значение здесь приведёт к интенсивному использованию своп-файла, что нежелательно в ряде случаев (ноутбуки, lowlatency-системы). Слишком маленькое значение может привести к тому, что при заполнении памяти будет принудительно запущен OOMkiller (процесс, запускающийся при исчерпании памяти и убивающий наиболее ресурсоёмкие задачи).
Значение параметра может быть в пределах от 0 (наименьшее использование подкачки) до 100 (подкачка используется часто). Значение по умолчанию - 60. Есть сообщения, что при большом объёме памяти (от 1Гб) оптимальным значением является 10. Для этого:echo "10" > /proc/sys/vm/swappiness
Больше об этом говорится здесь.
Как сделать настройки в /proc постоянными
Для того, чтобы изменения в директории /proc/sys стали постоянными, нужно внести изменения в файл конфигурации для sysctl - /etc/sysctl.conf
Формат этого файла требует некоторых пояснений. Так как sysctl может только изменять переменные в директории /proc/sys, то часть имени переменной обозначающая директорию отбрасывается. Другое изменение касается слэшей, которые заменяются на точки. Вот два простых правила для преобразования файлов в /proc/sys и переменных в sysctl:
Эти два правила позволят вам преобразовать любой файл в /proc/sys в любое имя переменной в sysctl. Обычное преобразование имени файла в переменную:/proc/sys/dir/file --> dir.file
dir1.dir2.file --> /proc/sys/dir1/dir2/file
От себя добавлю:В современных системах все чаще используется каталог /etc/sysctl.d вместо файла /etc/sysctl.conf
cat /sys/block/sdX/queue/scheduler
noop anticipatory deadline [cfq]
То есть сейчас стоит cfq - complete fair queue, полностью честный планировщик. Планировщики для разных дисков могут быть разными. Значения, которые можно передать в этот файл, такие: "as", "cfq", "deadline" или "noop". Об этом в других постах.
Ссылки
В сети много информации по /proc, но некоторые посты хотелось бы отметить особо. Здесь и тут есть много интересного, ну и конечно отличная документация этих седых UNIX-орлов из IBM :-) А здесь просто кладезь параметров, относящихся к работе в сети, которыми можно управлять через /proc (спасибо deimos)
фыТак же можно прочитать о многих параметрах /proc на русском в интересной серии постов.