Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统(即虚拟文件系统),它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc文件系统时,proc文件系统是动态从系统内核读出所需信息并提交的。
我们查看内核版本号、加载的模块、CPU和内存使用等信息,甚至修改路由转发都是通过/proc文件系统进行的,下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,这取决于你的内核配置和装载的模块。另外,在/proc下还有三个很重要的目录:net,scsi和sys。sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi 目录不存在。
一、/proc下常用文件列表
目的 | 命令 |
---|---|
查看系统内核符号表,用kprobes时会用到 | cat /proc/kallsyms |
查看系统内核版本号 | cat /proc/version |
查看系统当前加载的模块 | cat /proc/modules |
查看系统可用设备的列表 | cat /proc/devices |
查看系统CPU 的信息 (型号,家族,缓存) | cat /proc/cpuinfo |
查看物理内存、交换空间等的信息 | cat /proc/meminfo |
查看已加载的文件系统的列表 | cat /proc/mounts |
查看被支持的文件系统 | cat /proc/filesystems |
查看系统启动时内核命令行参数(grub.cfg, menu.lst) | cat /proc/cmdline |
查看socket状态 | cat /proc/net/sockstat |
查看arp表 | cat /proc/net/arp |
开启路由转发 | echo 1 >/proc/sys/net/ipv4/ip_forward |
/proc目录下的文件是虚拟文件;因此,proc 被称为虚拟文件系统。大多数虚拟文件的大小为零字节,但在查看时包含大量信息。虚拟文件上的大多数时间和日期戳反映了当前时间和日期;但是,这些文件会不断更新。/proc/interrupts、/proc/meminfo、/proc/cpuinfo 和 /proc/devices 等虚拟文件提供了系统硬件的视图。其他的,如 /proc/filesystems 文件和 /proc/sys 目录提供系统配置信息和接口。包含类似主题信息的文件被分组到虚拟目录中。例如,进程目录包含有关系统上每个正在运行的进程的信息。
/proc 中的大多数虚拟文件都可以使用 cat、more 和 less 等命令查看。
例如,要查看有关系统 CPU 的信息,请输入:
[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 85
model name : Intel(R) Xeon(R) Silver 4216 CPU @ 2.10GHz
stepping : 7
cpu MHz : 2095.078
cache size : 22528 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase avx2 invpcid rdseed clflushopt md_clear flush_l1d arch_capabilities
bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit
bogomips : 4190.15
clflush size : 64