Папка proc в линуксе
LuckyAds поставлен 29.08.2022 —>
Наши партнеры
- Калькулятор майнинга
- альтернатива обычному майнингу! Подключайся сейчас
- kryptex.com
- Трос крановый купить
- и трос грузовой для строительной техники, судовой отрасли
- profmetiz.ru
Библиотека сайта 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 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 содержит полную детализированную информацию о внутренней «интимной» деятельности Линукс и позволяет производить тонкую настройку многих аспектов ее конфигурации. Если не пожалеть времени на изучение возможностей этой директории, вы сможете улучшить свою машину. А это ли не то, чего мы все хотим?