1 概述
/proc
文件系统(procfs, process filesystem)是 Linux 内核对外暴露内核与进程信息的一种虚拟文件系统.
它不是一个真正存在于磁盘上的文件系统,而是由内核在运行时动态生成的,用于让用户空间(用户、程序、脚本等)读取甚至控制内核状态.
目录结构.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| /proc ├── 1/ │ ├── cmdline │ ├── environ │ ├── fd/ │ ├── maps │ ├── stat │ ├── status │ └── exe -> /sbin/init │ ├── cpuinfo ├── meminfo ├── modules ├── mounts ├── version ├── uptime ├── loadavg ├── interrupts ├── kmsg └── sys/
|
2 目录概述
/proc/cpuinfo
包含了当前系统的 CPU 信息,包括工作频率、缓存、地址线长度等.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 142 model name : Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz stepping : 12 microcode : 0x100 cpu MHz : 3984.379 cache size : 6144 KB physical id : 0 siblings : 8 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes ...
|
/proc/meminfo
显示的是当前内存的状态信息,如物理内存总容量、已使用的内存、共享内存、交换内存大小等等.
在开发的日常过程中更偏向于通过 top
输出.
/proc/kallsyms
是一个符号表,包含了内核的所有全局变量和函数在内存中的地址.
/proc/kcore
是一个动态的内核文件,里面包含了内核在主内存中的全部内容. 可以将调试器附加到这个文件上,来查看运行中系统的当前状态.
/proc/interrupts
该文件包含了系统记录的在每个 CPU 上处理的各类中断的计数信息.
1 2 3 4 5 6 7
| CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 1: 0 0 0 0 0 0 0 48016 IR-IO-APIC 1-edge i8042 8: 0 0 0 0 0 0 0 0 IR-IO-APIC 8-edge rtc0 9: 71800 0 0 0 0 0 0 0 IR-IO-APIC 9-fasteoi acpi 12: 0 0 0 0 0 0 2388 0 IR-IO-APIC 12-edge i8042 14: 0 369104 0 0 0 0 0 0 IR-IO-APIC 14-fasteoi INT34BB:00 ...
|
/proc/loadavg
显示系统在过去一段时间的平均负载.
1 2 3
| $ cat /proc/loadavg 0.86 0.95 0.95 1/1440 67234
|
/proc/<PID>
下面最常用的是 maps
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
$ sudo cat /proc/1/maps 5e0f9db45000-5e0f9db4b000 r--p 00000000 103:05 7119110 /usr/lib/systemd/systemd 5e0f9db4b000-5e0f9db56000 r-xp 00006000 103:05 7119110 /usr/lib/systemd/systemd 5e0f9db56000-5e0f9db5c000 r--p 00011000 103:05 7119110 /usr/lib/systemd/systemd 5e0f9db5c000-5e0f9db5e000 r--p 00016000 103:05 7119110 /usr/lib/systemd/systemd 5e0f9db5e000-5e0f9db5f000 rw-p 00018000 103:05 7119110 /usr/lib/systemd/systemd 5e0fcdd8b000-5e0fce1b5000 rw-p 00000000 00:00 0 [heap] 79724d000000-79724d0b3000 r--p 00000000 103:05 7091561 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 79724d0b3000-79724d3e6000 r-xp 000b3000 103:05 7091561 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 79724d3e6000-79724d4b1000 r--p 003e6000 103:05 7091561 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 79724d4b1000-79724d50d000 r--p 004b0000 103:05 7091561 /usr/lib/x86_64-linux-gnu/libcrypto.so.3 79724d50d000-79724d510000 rw-p 0050c000 103:05 7091561 /usr/lib/x86_64-linux-gnu/libcrypto.so.3
|
/proc/net
提供了内核的网络数据的统计.