В этой статье мы заглянем внутрь каталога /proc и познакомимся с его содержимым. Каталог /proc присутствует во всех системах Linux, независимо от версии или архитектуры.
Первое на чем хотелось бы остановиться, это развеять одно распространенное заблуждение. Оно заключается в том, что каталог /proc НЕ является настоящей файловой системой в прямом смысле этого слова. Это, так называемая, виртуальная файловая система. В procfs содержится информация о процессах и другая системная информация. Он сопоставляется с /proc и монтируется во время загрузки операционной системы.
Итак, давайте перейдем в этот каталог.
# cd /proc
Теперь взглянем на содержимое этого каталог
# ls 1 14 183 193 202 213 30 3743385 3777742 40 513 6 649 761810 946 buddyinfo execdomains key-users mounts stat vmstat 10 15 184 194 203 215 31 3743387 3780600 41 526 607 76 803 961 bus fb kmsg mtrr swaps zoneinfo 1001 1501881 185 195 204 216 32 3743393 3782157 42 529 616 761801 825 962 cgroups filesystems kpagecgroup net sys 1006 16 186 196 205 22 33 3743394 3783226 43 532 639 761802 826 967 cmdline fs kpagecount pagetypeinfo sysrq-trigger 11 17 187 197 206 2339526 34 3743396 3785210 506 533 641 761803 9 968 consoles interrupts kpageflags partitions sysvipc 12 178 188 198 207 25 35 3743431 3785391 507 534 642 761804 915 969 cpuinfo iomem loadavg sched_debug thread-self 1275 179 189 199 208 26 3590607 3743432 3786575 508 535 643 761805 916 970 crypto ioports locks schedstat timer_list 1287 18 19 2 209 27 36 3743457 3786576 509 536 644 761806 919 971 devices irq mdstat scsi tty 1288230 180 190 20 210 29 37 3755133 38 510 537 645 761807 920 994 diskstats kallsyms meminfo self uptime 1291 181 191 200 211 296 3743372 3771306 39 511 538 646 761808 921 999 dma kcore misc slabinfo version 13 182 192 201 212 3 3743379 3774937 4 512 542 648 761809 927 acpi driver keys modules softirqs vmallocinfo
Первое, что можно заметить, это то, что есть несколько знакомых по названиям файлов, а также куча пронумерованных каталогов. Эти каталоги представляют собой процессы, более известные как PID, и внутри них команду, которая их занимает. Файлы содержат системную информацию, такую как память (meminfo), информацию о процессоре (cpuinfo) и доступные файловые системы.
Заглянем в один из файлов:
$ cat /proc/meminfo MemTotal: 5885640 kB MemFree: 3411236 kB MemAvailable: 5208636 kB Buffers: 5020 kB Cached: 1866900 kB SwapCached: 0 kB Active: 823052 kB Inactive: 1219040 kB Active(anon): 640 kB Inactive(anon): 170408 kB Active(file): 822412 kB Inactive(file): 1048632 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 1048572 kB SwapFree: 1048572 kB ...
Как можно видеть, файл /proc/meminfo содержит много информации о памяти вашей системы, включая общий доступный объем (в КБ) и свободный объем. Выполнение команды cat для любого из файлов в /proc выведет их содержимое. Информацию о файлах можно получить на страницах руководств, выполнив:
# man 5 /proc/имя_файла
Краткое описание этих файлов следующее:
- /proc/cmdline — параметры загрузки ОС
- /proc/consoles — информация об используемой консоли
- /proc/devices — драйверы устройств, работающие в данный момент
- /proc/dma — информация о текущих каналах DMA
- /proc/fb — устройства фреймбуфера
- /proc/filesystems — файловые системы, поддерживаемые текущей версией ядра
- /proc/iomem — здесь содержится текущая карта системной памяти для устройств
- /proc/ioports — зарегистрированные диапазоны портов и устройства, которые их используют.
- /proc/loadavg — показывает нагрузку на систему в разрезе времени, а так же количество запущенных процессов и PID последнего процесса.
- /proc/locks — файлы заблокированные ядром
- /proc/meminfo — информация о системной памяти.
- /proc/misc — драйверы для подключаемых устройств.
- /proc/modules — загруженные в данный момент модули ядра.
- /proc/mounts — точки монтирования, используемые системой.
- /proc/partitions — информация о разделах, доступных системе.
- /proc/pci — информация о pci-устройствах.
- /proc/stat — записи и различная статистическая информация, хранящаяся с момента последней перезагрузки.
- /proc/swaps — информация о месте в разделе Swap.
- /proc/uptime — информация о времени работы с момента запуска системы ( в секундах)
- /proc/version — версия ядра, версия GCC и установленный дистрибутив Linux.
В пронумерованных каталогах /proc находится несколько файлов и ссылок. Номера этих каталогов соответствуют PID выполняемой в них команды. Давайте рассмотрим пример. В моей системе есть имя папки /proc/507:
# cd /proc/507 # ls attr clear_refs cpu_resctrl_groups exe io maps mountstats oom_adj patch_state sched smaps statm timens_offsets wchan autogroup cmdline cpuset fd limits mem net oom_score personality schedstat smaps_rollup status timers auxv comm cwd fdinfo loginuid mountinfo ns oom_score_adj projid_map sessionid stack syscall timerslack_ns cgroup coredump_filter environ gid_map map_files mounts numa_maps pagemap root setgroups stat task uid_map
Давайте заглянем в файл status
$ cat status Name: scsi_tmf_0 Umask: 0000 State: I (idle) Tgid: 507 Ngid: 0 Pid: 507 PPid: 2 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Groups: NStgid: 507 NSpid: 507 NSpgid: 0 NSsid: 0 Threads: 1 SigQ: 7/22833 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: ffffffffffffffff SigCgt: 0000000000000000 CapInh: 0000000000000000 CapPrm: 000001ffffffffff CapEff: 000001ffffffffff CapBnd: 000001ffffffffff CapAmb: 0000000000000000 NoNewPrivs: 0 Seccomp: 0 Speculation_Store_Bypass: thread vulnerable Cpus_allowed: 3 Cpus_allowed_list: 0-1 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 2 nonvoluntary_ctxt_switches: 0
Разберем, что все это значит? Важная часть находится наверху. Из файла состояния видно, что этот процесс принадлежит scsi_tmf_0. Находится в состоянии простоя, и его идентификатор процесса, равен 507. Мы также можем видеть, кто запустил процесс. Здесь UID и GID равны 0, что указывает на то, что этот процесс принадлежит пользователю root.
Во всех пронумерованных каталога набор файлов одинаковый, но самые интересные для работы следующие:
- cmdline — командная строка процесса;
- environ — переменные окружения;
- fd — файловые дискрипторы;
- limits — информация о лимитах процесса;
- mounts — сопутствующая информация о монтировании
В каталоге также присутствую несколько ссылок:
- cwd — ссылка на текущий рабочий каталог;
- exe — ссылка на исполняемый файл процесса
- root — ссылка на рабочий каталог процесса
Заключение
Данная статья поможет начать знакомство с каталогом /proc. Именно из этого каталога берут свою информацию такие команлы, как uptime, lsof, mount, ps и так далее.
Was this helpful?
0 / 0