Файловая система /proc является особой для GNU/Linux . Это виртуальная
файловая система и она не занимает места на вашем диске, то есть если вы
попробуете просмотреть его при незапущенном Linux, то ничего не
увидите. Это очень удобный способ получить информацию о системе, тем
более, что большинство файлов в этом каталоге читаемы для человека.
Большинство программ реально получают информацию из файлов в /proc, форматируют их своим способом, а затем отображают. Так делают все программы, которые отображают информацию о процессах, и некоторые из них мы уже видели (top, ps и подобные). /proc это также хороший источник информации о ваших аппаратных средствах, и таким же образом некоторые программы являются только интерфейсами к информации, содержащейся в /proc. Существует также специальный подкаталог /proc/sys. Он позволяет изменять некоторые параметры ядра в реальном режиме времени или отображать их.
Кстати, не стоит открывать файлы, содержащиеся в этих каталогах ― это может нарушить целостность файловой системы, или ядро может успеть изменить значения в этих файлах. Для того, чтобы не вызвать проблем, при записи в эти файлы нужно использовать команду echo.
Пример:
# echo «message» > /proc/file
Для чтения использоуйте команду cat/more/less
$ more /proc/cpuinfo
В результате вы получите всю информацию о процессорах, установленных в системе.
Если вы пролистаете содержимое каталога /proc, вы увидите много каталогов, названиями которых являются номера. Эти каталоги содержат информацию о все запущенных в данный момент процессах в системе.
Имейте в виду, что как пользователь, вы можете увидеть информацию только о своих собственных процессах. Для других пользователей вы такой информации не получите. Перейдя в каталог с номером какого-нибудь процесса и выполнив ls -l, можно заметить, что выводе для разных каталогов присутствуют одинаковые входы.
Вот краткое описание некоторых из них:
1. cmdline: этот (псевдо-) файл содержит целую командную строку, использованную для вызова процесса. Он не отформатирован: нет пробелов между программой и ее аргументами, и нет разделителя в конце строки.
2. cwd: это символическая ссылка на текущий рабочий каталог (следует из имени) процесса.
3. environ Этот файл содержит все переменные окружения, определенные для процесса, в форме VARIABLE=value. Подобно cmdline, вывод не форматирован вообще: нет разделителей между различными переменными, и нет разделителя в конце.
4. exe: это символическая ссылка на соответствующий запущенному процессу выполняемый файл.
5. fd: этот подкаталог содержит список файловых дескрипторов, открытых процессом в данный момент.
6. root: Это символическая ссылка на корневой каталог, используемый процессом. Обычно это будет /.
7. status: этот файл содержит различную информацию о процессе: название выполняемой программы, его текущее состояние, его PID и PPID, его реальные и эффективные UID и GID, использование им памяти, и другое.
Кроме каталогов, связанных с различными процессами, /proc также содержит несметное количество информации об аппаратном обеспечении вашей машины. Вот некоторые из них:
1. cpuinfo: этот файл содержит, соответственно своему названию, информацию о процессоре(рах) в вашей машине.
2. modules: этот файл содержит список модулей, которые используются ядром в данный момент, а также процент использования для каждого модуля. Фактически, это та же самая информация, которую предоставляет команда lsmod.
3. meminfo: этот файл предоставляет информацию о загрузке памяти на момент запроса. Более аккуратно форматированный вид этой же информации можно получить командой free.
4. apm: если у вас ноутбук, то вывод этого файла предоставит вам информацию о состоянии батарей. Вы сможете увидеть куда подключен AC, текущую загрузку батарей, и, если APM BIOS вашего ноутбука поддерживает это (к сожалению это не всегда так), то вы смож ете увидеть еще и сколько времени в минутах батареи смогут проработать. Файл не очень читаем, поэтому лучше использовать вместо него команду apm, которая предоставит информацию в "человекочитаемом" виде.
5. bus: этот подкаталог предоставит вам информацию о всех периферийных устройствах, найденных на
6. различных шинах вашего компьютера. Информация внутри него редко вообще читаема, и главным образом с ней имеют дело и умеют форматировать внешние утилиты.
Подкаталог /proc/sys
Задача этого каталога - сообщать о различных параметрах ядра и позволять замену некоторых из них в реальном режиме времени. Список каталогов и файлов преимущественно зависит от конкретно вашей системы, а большинство файлов будет использоваться только для очень специализированных приложений. Тем не менее, есть различные ситуации, в которых будет полезно изменять содержимое файлов в этом каталоге. Например, файл
/proc/sys/kernel/ctrl-alt-del
Этот файл содержит двоичное значение, которое управляет реакцией системы на комбинацию ctrl+alt+delete. Возможны два значения:
— Ноль (0) значит, что ctrl+alt+delete принимается и отправляется программе init, что обеспечит правильный останов и перезагрузку как если бы вы ввели команду reboot.
— Один (1) значит, что ctrl+alt+delete не принимается и никакого чистого отключения не происходит - перезагрузка как при нажатии на RESET.
То есть для изменения делаем так:
# echo 0 > /proc/sys/kernel/ctrl-alt-del
Файл /proc/sys/vm/swappiness
Этот параметр позволяет регулировать стремление системы сбрасывать данные из памяти в файл подкачки. Чрезмерное значение здесь приведёт к интенсивному использованию своп-раздела, что нежелательно в ряде случаев. Слишком маленькое значение может привести к тому, что при заполнении памяти будет принудительно запущен 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.
Вообще, есть много информации о /proc, как и о другой файлойвой системе /sys. Но это заслуживает отельного разговора, а на этом пора закругляться.
Большинство программ реально получают информацию из файлов в /proc, форматируют их своим способом, а затем отображают. Так делают все программы, которые отображают информацию о процессах, и некоторые из них мы уже видели (top, ps и подобные). /proc это также хороший источник информации о ваших аппаратных средствах, и таким же образом некоторые программы являются только интерфейсами к информации, содержащейся в /proc. Существует также специальный подкаталог /proc/sys. Он позволяет изменять некоторые параметры ядра в реальном режиме времени или отображать их.
Кстати, не стоит открывать файлы, содержащиеся в этих каталогах ― это может нарушить целостность файловой системы, или ядро может успеть изменить значения в этих файлах. Для того, чтобы не вызвать проблем, при записи в эти файлы нужно использовать команду echo.
Пример:
# echo «message» > /proc/file
Для чтения использоуйте команду cat/more/less
$ more /proc/cpuinfo
В результате вы получите всю информацию о процессорах, установленных в системе.
Если вы пролистаете содержимое каталога /proc, вы увидите много каталогов, названиями которых являются номера. Эти каталоги содержат информацию о все запущенных в данный момент процессах в системе.
Имейте в виду, что как пользователь, вы можете увидеть информацию только о своих собственных процессах. Для других пользователей вы такой информации не получите. Перейдя в каталог с номером какого-нибудь процесса и выполнив ls -l, можно заметить, что выводе для разных каталогов присутствуют одинаковые входы.
Вот краткое описание некоторых из них:
1. cmdline: этот (псевдо-) файл содержит целую командную строку, использованную для вызова процесса. Он не отформатирован: нет пробелов между программой и ее аргументами, и нет разделителя в конце строки.
2. cwd: это символическая ссылка на текущий рабочий каталог (следует из имени) процесса.
3. environ Этот файл содержит все переменные окружения, определенные для процесса, в форме VARIABLE=value. Подобно cmdline, вывод не форматирован вообще: нет разделителей между различными переменными, и нет разделителя в конце.
4. exe: это символическая ссылка на соответствующий запущенному процессу выполняемый файл.
5. fd: этот подкаталог содержит список файловых дескрипторов, открытых процессом в данный момент.
6. root: Это символическая ссылка на корневой каталог, используемый процессом. Обычно это будет /.
7. status: этот файл содержит различную информацию о процессе: название выполняемой программы, его текущее состояние, его PID и PPID, его реальные и эффективные UID и GID, использование им памяти, и другое.
Кроме каталогов, связанных с различными процессами, /proc также содержит несметное количество информации об аппаратном обеспечении вашей машины. Вот некоторые из них:
1. cpuinfo: этот файл содержит, соответственно своему названию, информацию о процессоре(рах) в вашей машине.
2. modules: этот файл содержит список модулей, которые используются ядром в данный момент, а также процент использования для каждого модуля. Фактически, это та же самая информация, которую предоставляет команда lsmod.
3. meminfo: этот файл предоставляет информацию о загрузке памяти на момент запроса. Более аккуратно форматированный вид этой же информации можно получить командой free.
4. apm: если у вас ноутбук, то вывод этого файла предоставит вам информацию о состоянии батарей. Вы сможете увидеть куда подключен AC, текущую загрузку батарей, и, если APM BIOS вашего ноутбука поддерживает это (к сожалению это не всегда так), то вы смож ете увидеть еще и сколько времени в минутах батареи смогут проработать. Файл не очень читаем, поэтому лучше использовать вместо него команду apm, которая предоставит информацию в "человекочитаемом" виде.
5. bus: этот подкаталог предоставит вам информацию о всех периферийных устройствах, найденных на
6. различных шинах вашего компьютера. Информация внутри него редко вообще читаема, и главным образом с ней имеют дело и умеют форматировать внешние утилиты.
Подкаталог /proc/sys
Задача этого каталога - сообщать о различных параметрах ядра и позволять замену некоторых из них в реальном режиме времени. Список каталогов и файлов преимущественно зависит от конкретно вашей системы, а большинство файлов будет использоваться только для очень специализированных приложений. Тем не менее, есть различные ситуации, в которых будет полезно изменять содержимое файлов в этом каталоге. Например, файл
/proc/sys/kernel/ctrl-alt-del
Этот файл содержит двоичное значение, которое управляет реакцией системы на комбинацию ctrl+alt+delete. Возможны два значения:
— Ноль (0) значит, что ctrl+alt+delete принимается и отправляется программе init, что обеспечит правильный останов и перезагрузку как если бы вы ввели команду reboot.
— Один (1) значит, что ctrl+alt+delete не принимается и никакого чистого отключения не происходит - перезагрузка как при нажатии на RESET.
То есть для изменения делаем так:
# echo 0 > /proc/sys/kernel/ctrl-alt-del
Файл /proc/sys/vm/swappiness
Этот параметр позволяет регулировать стремление системы сбрасывать данные из памяти в файл подкачки. Чрезмерное значение здесь приведёт к интенсивному использованию своп-раздела, что нежелательно в ряде случаев. Слишком маленькое значение может привести к тому, что при заполнении памяти будет принудительно запущен 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.
Вообще, есть много информации о /proc, как и о другой файлойвой системе /sys. Но это заслуживает отельного разговора, а на этом пора закругляться.
Комментариев нет:
Отправить комментарий