Я фанат этого блога! Подписаться

Linux дистрибутивы

На нашем линукс блоге вы можете скачать linux дистрибутивы, а так же найти много информации по линуксу

Subscribe

Два слова о /proc

Июль 13th, 2010

Используя файловую систему /proc, можно изменять многие параметры системы без необходимости перезагрузки машины и многое узнать о работе системы. О некоторых полезных командах - далее в этом посте.

Файловая система /proc – это виртуальная файловая система, поэтому файлы, которые вы найдете в этом каталоге, на самом деле не занимают места на вашем жестком диске. Это карта, создаваемая ядром и присоединяемая к вашей обычной файловой системе, чтобы обеспечить доступ к настройкам ядра и информации о системе.

Многие программы собирают информацию из файлов в /proc, форматируют их и выводят результат пользователю (top, ps и другие). Также существует специальный подкаталог /proc/sys. Он позволяет вам просматривать параметры ядра и изменять их на лету.

Общие слова
Не стоит открывать эти файлы обычным текстовым редактором – это может нарушить целостность данных или ядро может успеть изменить значения в этих файлах.
Чтобы этого избежать, следует пользоваться командами echo и cat для установки и просмотра содержимого файлов соответственно.

Чтобы передать значение fake в файл /proc/your/file, следует дать команду:

echo “fake” > /proc/your/file

Для того, чтобы увидеть значение в файле, используем cat:

cat /proc/your/file

получим:
fake

В основном в /proc вы найдете файлы read-only за исключением /proc/sys, которая содержит большинство параметров ядра и предназначена для изменения во время работы системы.

Примеры использования /proc
В каталоге /proc множество файлов, большинство из них – только для чтения, из них можно узнать многое об оборудовании. Но есть файлы и на запись – они позволяют менять на лету параметры работы ядра. Вот некоторые из них:

/proc/scsi/scsi
Позволяет добавить или отключить диск, если он поддерживает горячую замену (SCSI или SATA). Указать ядру на подключение нового диска можно командой:

echo “scsi add-single-device w x y z” > /proc/scsi/scsi

Чтобы эта команда работала правильно, вы должны указать параметры значений w, x, y, и z следующим образом:

  • w – это ID хост адаптера, где первый адаптер имеет ID ноль (0))
  • x – это канал SCSI на хост адаптере, где первый канал ноль (0)
  • y – это SCSI ID устройства
  • z – это номер LUN, где первый LUN ноль (0)

Этот трюк можно проворачивать не только с дисками: в своё время это пришлось делать мне для подключения многослотового кардиридера.

Чтобы извлечь диск из системы без перезагрузки, размонтируем его и даём команду:

echo “scsi remove-single-device w x y z” > /proc/scsi/scsi

Перед тем как ввести эту команду и удалить SCSI диск, убедитесь, что вы отмонтировали файловые системы на этом диске.

/proc/sys/kernel/acct
Здесь содержатся три конфигурируемых значения, которые управляют подсчётом процессов, основанном на свободном пространстве файловой системы:

  1. Если свободное пространство ниже значения в процентах, то процесс
    подсчета останавливается.
  2. Если свободное пространство выше, то процесс запускается.
  3. Частота в секундах, с которой проверяются предыдущие два значения.

Чтобы изменить значения в этом файле, вам следует использовать разделенный список параметров. Значения по умолчанию: 2 4 30

Для их изменения следует дать команду

echo “3 5 40″ > /proc/sys/kernel/acct

Эти значения остановят подсчёт, если в файловой системе менее 3 процентов свободного пространства и начнет опять если появится 5 или более процентов. Проверка производится каждые 40 секунд.

/proc/sys/kernel/ctrl-alt-del
Этот файл содержит двоичное значение, которое управляет реакцией системы на комбинацию ctrl+alt+delete. Возможны два значения:

  1. Ноль (0) значит, что ctrl+alt+delete принимается и отправляется программе init, что обеспечит правильный останов и перезагрузку как если бы вы ввели команду reboot.
  2. Один (1) значит, что ctrl+alt+delete не принимается и никакого чистого отключения не происходит – перезагрузка как при нажатии на RESET.

Значение по умолчанию – 0.

/proc/sys/kernel/panic
Задаёт время в секундах, которое ядро будет ждать перед перезагрузкой если произойдет “kernel panic”. Установка в ноль (0) секунд отключит возможность перезагрузки при kernel panic.
Значение по умолчанию – 0.

/proc/sys/kernel/sysrq
Включает или выключает возможность использования Волшебной 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
  • Замените слэши на точки в имени файла.

Эти два правила позволят вам преобразовать любой файл в /proc/sys в любое имя переменной в sysctl. Обычное преобразование имени файла в переменную:

/proc/sys/dir/file –> dir.file
dir1.dir2.file –> /proc/sys/dir1/dir2/file

Вы можете увидеть все переменные, доступные для изменения, используя команду sysctl -a.

Хотя нижеследующее замечание относится к другой файловой системе, /sys, я считаю полезным привести здесь один пример. Это смена планировщиков ввода-вывода на лету. Чтобы узнать, какой планировщик стоит сейчас, даём команду:

cat /sys/block/sdX/queue/scheduler

Заменяя sdX на интересующее нас устройство. Текущий планировщик отмечен в квадратных скобках:

noop anticipatory deadline [cfq]

То есть сейчас стоит cfq – complete fair queue, полностью честный планировщик. Планировщики для разных дисков могут быть разными. Значения, которые можно передать в этот файл, такие: “as”, “cfq”, “deadline” или “noop”. Об этом в других постах.

Ссылки
В сети много информации по /proc, но некоторые посты хотелось бы отметить особо. Здесь и тут есть много интересного, ну и конечно отличная документация этих седых UNIX-орлов из IBM :-) А здесь просто кладезь параметров, относящихся к работе в сети, которыми можно управлять через /proc

Это моя статья из блога mydebianblog.blogspot.com

Комментировать

 


melayu boleh