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