Proc что это за программа
Наши партнеры
- Калькулятор майнинга
- альтернатива обычному майнингу! Подключайся сейчас
- kryptex.com
- Трос крановый купить
- и трос грузовой для строительной техники, судовой отрасли
- profmetiz.ru
Книги по Linux (с отзывами читателей)
Библиотека сайта rus-linux.net
Откройте для себя возможности директории /proc
Оригинал: Discover the possibilities of the /proc directory
Автор: Federico Kereki
Дата: 15 февраля 2008
Свободный перевод: Алексей Дмитриев
Дата перевода: 2 марта 2008
Директория /proc — это странный «зверь». В действительности он не существует, хотя его можно использовать. Его файлы нулевой длины не являются ни двоичными, ни текстовыми, и все же их можно исследовать и выводить на экран. Эта своеобразная директория содержит все детали вашей Линукс-системы, включая ядро, процессы, и параметры конфигурации. Изучая директорию /proc, вы узнаете как работают команды Линукс, и даже сможете решить некоторые административные задачи.
В мире Линукс все является файлом; даже с устройствами обращаются как с файлами (в директории /dev). Хотя вы можете думать, будто «нормальные» файлы бывают либо двоичными, либо текстовыми (ну, возможно, еще файлы устройств, или конвейеров), в директории /proc содержатся файлы странного типа: виртуальные файлы. Эти файлы перечислены в списке, но не существуют на диске, операционная система создает их «на лету», когда вы пытаетесь прочитать их.
Большинство виртуальных файлов всегда датированы текущим временем, что свидетельствует об их постоянном обновлении. Сама директория /proc создается заново каждый раз, когда вы загружаете машину. Чтобы иметь возможность исследовать всю директорию, вам необходимо заручиться правами суперпользователя; некоторые файлы (относящиеся к процессам) принадлежат пользователю, запустившему процесс. И почти все файлы доступны только для чтения, немногие открытые для записи позволяют изменять параметры ядра (в основном в директории /proc/sys). Ясное дело, что нужно быть предельно внимательным, изменяя эти параметры.
Организация директории /proc
Директория /proc состоит из виртуальных каталогов и подкаталогов, в которых группируются файлы сходных типов. Работая как суперпользователь, введите команду:
и получите список, вроде вот такого:
1 2432 3340 3715 3762 5441 815 devices modules 129 2474 3358 3716 3764 5445 acpi diskstats mounts 1290 248 3413 3717 3812 5459 asound dma mtrr 133 2486 3435 3718 3813 5479 bus execdomains partitions 1420 2489 3439 3728 3814 557 dri fb self 165 276 3450 3731 39 5842 driver filesystems slabinfo 166 280 36 3733 3973 5854 fs interrupts splash 2 2812 3602 3734 4 6 ide iomem stat 2267 3 3603 3735 40 6381 irq ioports swaps 2268 326 3614 3737 4083 6558 net kallsyms sysrq-trigger 2282 327 3696 3739 4868 6561 scsi kcore timer_list 2285 3284 3697 3742 4873 6961 sys keys timer_stats 2295 329 3700 3744 4878 7206 sysvipc key-users uptime 2335 3295 3701 3745 5 7207 tty kmsg version 2400 330 3706 3747 5109 7222 buddyinfo loadavg vmcore 2401 3318 3709 3749 5112 7225 cmdline locks vmstat 2427 3329 3710 3751 541 7244 config.gz meminfo zoneinfo 2428 3336 3714 3753 5440 752 cpuinfo misc
Ресурсы для изучения директории /proc
Поиски документации по файловой системе /proc могут стать утомительным делом, так как она разбросана по всем исходникам ядра. Просматривая директорию /usr/scr/linux/Documentation, я нашел файл proc.txt, который содержит множество информации, к сожалению, несколько устаревшей — последнее обновление было в ноябре 2000 года, когда только вышла версия ядра 2.4.0. Но все равно, бродить по директории проще, чем просматривать исходные файлы на языке Си. Вы можете найти даже больше, чем хотели; например, мне попался файл laptop-mode.txt, длиной почти в 1000 строк, посвященный исключительно единственному файлу /proc/sys/vm/laptop_mode.
Пронумерованные директории (позже мы к ним вернемся) соответствуют каждому процессу, протекающему в системе, специальная символическая ссылка self указывает на текущий процесс. Некоторые из виртуальных файлов содержат информацию о «железе», в частности /proc/cpuinfo, /proc/meminfo и /proc/interrupts. Другие файлы несут информацию о файловых системах, например /proc/filesystems или /proc/partitions. Файлы в директории /proc/sys относятся к параметрам конфигурации ядра, как мы увидим позже.
Команда: # cat /proc/meminfo
выведет на экран нечто вроде:
# cat /proc/meminfo MemTotal: 483488 kB MemFree: 9348 kB Buffers: 6796 kB Cached: 168292 kB . несколько строк пропущено.
Если вы попробуете ввести команды top или free , вы, без сомнения, встретите знакомые номера процессов. Собственно говоря, многие хорошо известные утилиты получают свою информацию именно из директории /proc. Скажем, вы желаете узнать версию вашего ядра — можете набрать uname -srv , либо перейти в источнику этих данных и набрать cat /proc/version .
Вот еще интересные файлы:
- /proc/apm: Содержит информацию про Advanced Power Management , если таковой установлен.
- /proc/acpi: Похожая директория, содержащая массу информации по более современному Advanced Configuration and Power Interface . Например, чтобы выяснить, подключен ли ваш ноутбук к розетке, можете применить команду: cat /proc/acpi/ac_adapter/AC/state , чтобы получить ответ: «on line» или «off line.»
- /proc/cmdline: Показывает параметры, переданные ядру при загрузке. В моем случае это: root=/dev/disk/by-id/scsi-SATA_FUJITSU_MHS2040_NLA5T3314DW3-part3 vga=0x317 resume=/dev/sda2 splash=silent PROFILE=QuintaWiFi , что сообщает мне, какой раздел диска является корневым, какой режим VGA используется, и прочее. Последний параметр относится к openSUSE’s System Configuration Profile Management .
- /proc/cpuinfo: Содержит информацию о процессоре вашей машины. На моем ноутбуке, команда cat /proc/cpuinfo выдает листинг, начинающийся с:
processor : 0 vendor_id : AuthenticAMD cpu family : 6 model : 8 model name : Mobile AMD Athlon(tm) XP 2200+ stepping : 1 cpu MHz : 927.549 cache size : 256 KB
nodev sysfs nodev rootfs nodev bdev nodev proc nodev cpuset . несколько строк пропущено. nodev ramfs nodev hugetlbfs nodev mqueue ext3 nodev usbfs ext2 nodev autofs
Что внутри процесса?
Как я уже говорил, директории с номерными именами представляют все текущие процессы. Когда процесс заканчивается, его субдиректория в директории /proc автоматически исчезает. Если вы откроете эти директории, пока они еще существуют, внутри вы обнаружите множество файлов, таких как:
attr cpuset fdinfo mountstats stat auxv cwd loginuid oom_adj statm clear_refs environ maps oom_score status cmdline exe mem root task coredump_filter fd mounts smaps wchan
- cmdline: Содержит команду, запустившую процесс, со всеми своими параметрами.
- cwd: Содержит симлинк на текущую работающую директорию (current working directory — CWD), ссылку на исполняемый файл процесса, и ссылку на его корневую директорию.
- environ: Содержит все переменные среды окружения для данного процесса.
- fd: Содержит все файловые дескрипторы для данного процесса, показывая, какие файлы или устройства процесс задействует.
- maps, statm, and mem: Относятся к памяти задействованной в процессе.
- stat and status: Содержит информацию о статусе процесса.
Тонкая настройка системы: /proc/sys
Директория /proc/sys не только содержит информацию о системе, она еще позволяет изменять параметры ядра «на лету», а также активировать или отключать свойства. (Нет сомнения, что это может оказаться вредоносным для вашей системы — считайте, что я вас предупредил!) Чтобы определить, можно ли редактировать файл, или же он является файлом «только для чтения», воспользуйтесь командой ls -ld ; если файл имеет «W» атрибут, значит его можно каким-то образом использовать для конфигурации ядра. Для примера, вывод команды ls -ld /proc/kernel/* начинается примерно так:
dr-xr-xr-x 0 root root 0 2008-01-26 00:49 pty dr-xr-xr-x 0 root root 0 2008-01-26 00:49 random -rw-r--r-- 1 root root 0 2008-01-26 00:49 acct -rw-r--r-- 1 root root 0 2008-01-26 00:49 acpi_video_flags -rw-r--r-- 1 root root 0 2008-01-26 00:49 audit_argv_kb -r--r--r-- 1 root root 0 2008-01-26 00:49 bootloader_type -rw------- 1 root root 0 2008-01-26 00:49 cad_pid -rw------- 1 root root 0 2008-01-26 00:49 cap-bound
- debug: Содержит (удивительно!) отладочную информацию. Хорошо для тех, кто занимается разработкой ядра.
- dev: Содержит параметры специфических устройств в вашей системе. Для примера просмотрите директорию /dev/cdrom.
- fs: Предлагает информацию по всем возможным аспектам файловой системы.
- kernel: Позволяет напрямую влиять на конфигурацию и работу ядра.
- net: Позволяет контролировать сетевые аспекты. Будьте осторожны, в случае ошибки вы потеряете связь с сетью!
- vm: Имеет дело с подсистемой VM (виртуальной памяти).
Заключение
Специфическая директория /proc содержит полную детализированную информацию о внутренней «интимной» деятельности Линукс и позволяет производить тонкую настройку многих аспектов ее конфигурации. Если не пожалеть времени на изучение возможностей этой директории, вы сможете улучшить свою машину. А это ли не то, чего мы все хотим?
MNorin.com
Блог про Linux, Bash и другие информационные технологии
Немного о директории /proc в Linux
/proc — это не настоящая файловая система. Она виртуальная. Ее основная задача — получение состояния системы и частично выполнение управляющих действий. К сожалению, не так много людей знают, что находится внутри и как этим пользоваться. Поэтому немного расскажу, чем эта директория может быть вам полезна.
Информация о процессах в директории /proc
Информация о процессах хранится в директориях /proc/N, где N — числовой идентификатор процесса. В этой директории содержатся различные псевдо-файлы, которые содержат информацию о самом процессе и связанном с ним окружении.
/proc/N/cmdline — Содержимое командной строки, которой был запущен процесс.
/proc/N/environ — Описание окружения, в котором работает процесс. Оно может быть полезно для просмотра содержимого окружения, если вам надо, например, посмотреть, была ли установлена переменная окружения перед запуском программы.
/proc/N/exe — Символическая ссылка на выполнимый файл запущенной программы.
/proc/N/limits — Лимиты на использование системных ресурсов, актуальные для работающего процесса.
/proc/N/mounts — Список смонтированных ресурсов, которые доступны процессу
/proc/N/status — Статус работающей программы. Он включает в себя такую информацию как идентификатор родительского процесса, статус самого процесса, его название, его идентификатор, идентификатор пользователя и группы, группы, в которые входит владелец процесса, сколько потоков использует процесс, сколько памяти он использует и так далее.
В этой же директории содержится несколько псевдо-директорий:
/proc/N/cwd — Текущая директория для процесса. Представлена символической ссылкой на директорию. Если рабочая директория для процесса изменится, изменится и ссылка.
/proc/N/fd — Файловые дескрипторы, которые используются процессом. Для программы bash, например, там по умолчанию будут дескрипторы 0, 1, 2 и 255, указывающие на виртуальный терминал, в котором запущен процесс, например, /dev/pts/6.
/proc/N/fdinfo — Информация о файловых дескрипторах. Каждый файл в этой директории содержит поля pos (позиция курсора), flags (флаги, с которыми этот дескриптор был открыт) и mnt_id (идентификатор точки монтирования из списка, содержащегося в файле /proc/N/mountinfo)
/proc/N/root — Символическая ссылка на директорию, которая для данного процесса является корневой
/proc/N/net — Сетевые системные ресурсы и их параметры, действующие для конкретного процесса.
Общесистемные псевдо-файлы и псевдо-директории
/proc/acpi — директория, связанная с управлением питанием и различным устройствами. От компьютера к компьютеру содержимое этой директории отличается. Через эту директорию можно посылать управляющие сигналы устройствам. Например: в моем ноутбуке есть кнопка включения подсветки для клавиатуры. Сочетание клавиш, которые для этого используются, — это Fn плюс кнопка с изображением лампочки на клавиатуре. Но я могу включать и выключать подсветку программно.
Включить:
echo "on" > /proc/acpi/ibm/light
echo "off" > /proc/acpi/ibm/light
Таким образом, можно на некоторое событие в системе повесить обработчик (на баше), который будет мигать лампочкой, если пришло письмо или произошло еще что-нибудь. Однако, возможность таким образом работать с устройствами зависит от модели ноутбука и обычно драйверов устройств. Устройства именуются очень часто по-разному, и вам надо будет предварительно посмотреть, что у вас есть и как это можно использовать.
Через директорию /proc/acpi также, например, можно проверить, открыт или закрыт ноутбук. Для этого на моем ноутбуке можно проверить содержимое файла /proc/acpi/button/lid/LID/state. Если в файле содержится «state: open», значит крышка открыта.
/proc/asound — директория, связанная со звуковыми устройствами. Например, файл /proc/asound/cards содержит звуковые карты, доступные в системе.
/proc/bus — информация о системных шинах и устройствах, которые к ним подключены. Например, файл /proc/bus/input/devices содержит информацию о различных устройствах, список можно получить такой командой:
grep "Name" /proc/bus/input/devices
/proc/fs — Информация о файловых системах. Например, вам нужно посмотреть опции, с которыми в данный момент работает файловая система ext4, размещенная на разделе sda2. Это можно сделать командой
cat /proc/fs/ext4/sda2/options
/proc/sys — Псевдо-директория, содержащая массу информации о системе. К примеру, файл /proc/sys/dev/cdrom/info содержит информацию о CD/DVD-ROM, который установлен в системе. Выглядит эта информация так:
CD-ROM information, Id: cdrom.c 3.20 2003/12/17 drive name: sr0 drive speed: 24 drive # of slots: 1 Can close tray: 1 Can open tray: 1 Can lock tray: 1 Can change speed: 1 Can select disk: 0 Can read multisession: 1 Can read MCN: 1 Reports media changed: 1 Can play audio: 1 Can write CD-R: 1 Can write CD-RW: 1 Can read DVD: 1 Can write DVD-R: 1 Can write DVD-RAM: 1 Can read MRW: 1 Can write MRW: 1 Can write RAM: 1
В общем-то, всё понятно. Название устройства и различные его характеристики, названные человеческими словами. Как видно выше, мой DVD-RW много чего умеет, но не умеет выбирать диски.
/proc/sys/fs — Как понятно по названию, псевдо-директория, содержащая информацию о подсистеме, связанной с файловыми системами. Опять же, пример: /proc/sys/fs/pipe-max-size. Этот псевдо-файл содержит максимальный размер буфера пайпа. Поэтому если вдруг у вас некорректно работает какой-то скрипт, в котором данные передаются через пайп, есть повод задуматься, какого размера у вас буфер пайпа и заглянуть в этот псевдо-файл. Возможно вы после этого захотите воспользоваться командами «exec» и «read» с опцией «-u».
/proc/sys/net — Общесистемные сетевые параметры. Например:
echo "1" > /proc/sys/net/ipv4/ip_forward
Включить форвардинг пакетов между двумя сетевыми интерфейсами.
/proc/sys/vm — Параметры виртуальной памяти. Например, вы можете сбросить кэш и освободить немного памяти, используемой под кэш командой
echo "3" > /proc/sys/vm/drop_caches
В общем, для начала знакомства с этой директорией достаточно, но я рекомендую по возможности более плотно познакомиться с этой директорией и ее содержимым. Более подробную информацию можно найти в странице руководств в 5 разделе
man 5 proc
Когда вы познакомитесь с (псевдо)директорией /proc, вы сможете получать массу информации о системе без всяких утилит, просто при помощи команды cat.
Похожие посты:
- Сохранение Flash-видео в Google Chrome
- Как очистить кэш памяти в linux?
- Inotify в bash: ловим изменения файловой системы
- Объединение нескольких файловых систем без создания массива
- JSLinux — Эмулятор Linux на JavaScript
- Работа с контейнерами LXC в Debian
- Парсим данные с GisMeteo в bash’е
- Малоизвестные веб-сервера
- Запись диска из консоли в Linux
- Установка программ в Debian при помощи tasksel
- Нажмите здесь, чтобы поделиться контентом на Facebook. (Открывается в новом окне)
- Нажмите, чтобы поделиться на LinkedIn (Открывается в новом окне)
- Нажмите, чтобы поделиться на Reddit (Открывается в новом окне)
- Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
- Нажмите, чтобы поделиться записями на Tumblr (Открывается в новом окне)
- Нажмите, чтобы поделиться записями на Pinterest (Открывается в новом окне)
- Нажмите, чтобы поделиться записями на Pocket (Открывается в новом окне)
- Нажмите, чтобы поделиться в Telegram (Открывается в новом окне)
- Нажмите, чтобы поделиться в WhatsApp (Открывается в новом окне)
- Нажмите, чтобы поделиться в Skype (Открывается в новом окне)
При подготовке материала использовались источники:
https://rus-linux.net/lib.php?name=/MyLDP/proc/proc.html