/proc下的字文件及子文件夹的解释:
/proc 文件系统是 GNU/Linux 特有的。它是一个虚拟的文件系统,因此在该目录中的所有文件都不会消耗磁盘空间。通过它能够非常简便地了解系统信息,尤其是其中的大部分文件是人类可阅读的(不过还是需要一些帮助)。许多程序实际上只是从 /proc 的文件中收集信息,然后按照它们自己的格式组织后显示出来。有一些显示进程信息的程序(top、ps 等)就是这么作的。/proc 还是了解您系统硬件的好去处。就象那些显示进程信息的程序一样,不少程序只是提供了获取 /proc 中信息的接口。其中还有一个特殊的子目录:/proc/sys。它让您能够显示内核参数并更改它们,而且这一更改将立即生效。
./acpi : 高级电源管理;
./asound : 声卡配置文件;
buddyinfo :
内存管理的信息,主要用来分析内存碎片的,内存分为 2个区域,DMA,DMA32 ,如果分页大小为4K,那我们可以分区域来看:
DMA: 有6块1页大小的空间、2块2页大小的空间,3块4页大小的空间,6块8页大小的空间。。。。。。
以此类推,越是往后的空间,就越是连续,数目越多,就代表这个大小的连续空间越多,当大的连续空间很少的时候,也就说明,内存碎片已经非常多了。
此外可以这样理解:
Node表示在NUMA环境下的节点号,这里只有一个节点0;zone表示每一个节点下的区域,一般有DMA、Normal和HignMem三个区域(此处我的是虚拟机Ubuntu);后面的列表示,伙伴系统中每一个order对应的空闲页面块。例如,对于zone DMA的第二列(从0开始算起),空闲页面数为3*2^2,可用内存为3*2^2*PAGE_SIZE。
(伙伴关系 : 由一个母实体分成的两个各方面属性一致的两个子实体,这两个子实体就处于伙伴关系。在操作系统分配内存的过程中,一个内存块常常被分成两个大小相等的内存块,这两个大小相等的内存块就处于伙伴关系)
bus :
该子目录包含您机器上的总线能够找到的所有外设信息。这些信息通常是不可阅读的(各种数字,可以打开但看不懂),不过可以使用外部工具(比如 lspcidrake、lspnp 等)对其中大部分重新格式化。
cgroups :
可以查看系统支持的cgroup子系统,也可以用来判断系统是否支持cgroup,如果hierarchy项非0说明相应的子系统已经被mount,此时如果再mount这个子系统到其它的目录就可能提示busy错误
参考:http://blog.csdn.net/wudongxu/article/details/8474198
cmdline : 启动时传递给kernel的参数信息,boot相关。
consoles :
官方解释:It allows users to see what consoles are currently known to the system
and with what flags.(To see which character device lines are currently used for the system console /dev/console, you may simply look into this file)
cpuinfo : 系统中CPU的提供商和相关配置信息;
详细介绍:
processor :系统中逻辑处理核的编号。对于单核处理器,则课认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id :CPU制造商
cpu family :CPU产品系列代号
model :CPU属于其系列中的哪一代的代号
model name:CPU属于的名字及其编号、标称主频
stepping :CPU属于制作更新版本
cpu MHz :CPU的实际使用主频
cache size :CPU二级缓存大小
physical id :单个CPU的标号
siblings :单个CPU逻辑物理核数
core id :当前物理核在其所处CPU中的编号,这个编号不一定连续
cpu cores :该逻辑核所处CPU的物理核数
apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu :是否具有浮点运算单元(Floating Point Unit)
fpu_exception :是否支持浮点计算异常
cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags :当前CPU支持的功能
bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size :每次刷新缓存的大小单位
cache_alignment :缓存地址对齐单位
address sizes :可访问地址空间位数
power management :对能源管理的支持
参考:http://blog.csdn.net/lgstudyvc/article/details/7889364
crypto : 系统上已安装的内核使用的密码算法及每个算法的详细信息列表。
devices : 系统已经加载的所有块设备和字符设备的信息;
与/dev/的区别:
/proc/devices/中的设备是通过insmod加载到内核的,它可产生一个major供mknod作为 参数。
/dev/* 是通过mknod加上去的,格式:mknod device1 c/b major minor 如:mknod /dev/ttyS0 c 4 64,用户通过此设备名来访问你的驱动。
major&minor:
文件名比如:/dev/sda 、/dev/raw/raw1 都是用户空间名称,OS Kernel根本不知道这个名称代指什么。在内核空间是通过major、minor device number来区分设备的。
major device number: 可以看做是设备驱动程序,被同一设备驱动程序管理的设备有相同的major device number。这个数字实际是Kernel 中device driver table的索引。这个表保存着不同的设备驱动程序;
minor device number: 代表被访问的具体设备。也就是说,Kernel根据major device number找到设备驱动程序,然后再从minor device number获得设备位置等属性。
diskstats : 用于显示磁盘、分区和统计信息,就是显示各种读写的数据;
参考:http://blog.csdn.net/b_dogs881221/article/details/8228417
http://blog.csdn.net/tenfyguo/article/details/7477526
dma : 每个正在使用且注册的ISA DMA通道的信息列表
driver : 各种驱动信息。
execdomains : 内核当前支持的执行域(每种操作系统独特“个性”)信息列表。
fb : 帧缓冲设备列表文件,包含帧缓冲设备的设备号和相关驱动信息。
filesystems : 当前被内核支持的文件系统类型列表文件,被标示为nodev的文件系统表示不需要块设备的支持。通常mount一个设备时,
如果没有指定文件系统类型将通过此文件来决定其所需文件系统的类型。
fs : 文件系统的信息。
interrupts : 当前系统使用的中断的情况,文件的每一行都有一个保留的中断。每行中的域有:中断号,本行中断的发生次数,可能带有一个加号的域(SA_INTERRUPT标志设置),以及登记这 个中断的驱动程序的名字。
参考:http://blog.csdn.net/richardysteven/article/details/6064717
iomem : 显示所有内存缓冲区映射到物理内存的设备,和分配给每个缓冲区的物理内存地址(以十六进制数字列出);即0000 0000 - ffff ffff对应的设备包含主内存。
ioports : io端口资源分布,结合iomem可以理解,参考:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29631743&id=4505778
irq : 中断请求设备信息
kallsyms : 调试内核所需要的信息,kallsyms抽取了内核用到的所有函数地址(全局的、静态的)和非栈数据变量地址,生成一个数据块,作为只读数据链接进kernel image,相当于内核中存了一个System.map。
kcore : like an "alias" for the memory in your computer. Its size is the same as the amount of RAM you have, and if you read it as
a file, the kernel does memory reads. 也就是说相当于内存的化名。
keys :
key-users :
kmsg : http://blog.sina.com.cn/s/blog_69d581ad0100tied.html
kpagecount : 包含64位计数 , 表示每一页被映射的次数,按照PFN值固定索引。
kpageflags : 此文件包含为64位的标志集 ,表示该页的属性,按照PFN索引。
上述两条参考:http://blog.chinaunix.net/uid-20395453-id-3841096.html
loadavg : 系统平均负载,即在特定时间间隔内运行队列中的平均进程数;
具体解释:前三个数字是1、5、15分钟内的平均进程数,后面两个一个的分子是正在运行的进程数,分母是进程总数;另一个是最近运行的进程ID号。
locks : 这个文件包含在打开的文件上的加锁信息。文件中的每一行描述了特定文件和文档上的加锁信息以及对文件施加的锁的类型。内核也可以需要时对文件施加强制性锁。
mdstat : 包含了由md设备驱动程序控制的RAID设备信息。
meminfo : 给出了内存状态的信息。它显示出系统中空闲内存,已用物理内存和交换内存的总量。它还显示出内核使用的共享内存和缓冲区总量。这些信息的格式和top,free命令显示的结果类似。
详细参数参考:http://bbs.51cto.com/thread-1100479-1.html
misc : 其他的主要设备(设备号为10)上注册的驱动
modules : 模块加载列表,insmod(加载模块)后在此添加一行。
mounts : 到 /proc/self/mounts 的一个符号链接。参考:http://blog.csdn.net/qianguozheng/article/details/27342851
mtrr : 系统使用的Memory Type Range Registers (MTRRs)。
net :
./dev :
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
eth0: 4754677 3895 0 0 0 0 0 0 165080 2370 0 0 0 0 0 0
lo: 39434 514 0 0 0 0 0 0 39434 514 0 0 0 0 0 0
最左边的表示接口的名字,Receive表示收包,Transmit表示收包; bytes表示收发的字节数; packets表示收发正确的包量; errs表示收发错误的包量;
drop表示收发丢弃的包量;
参考 : http://www.cnblogs.com/pricks/p/3822236.html
./snmp 通过访问该文件系统,可以对TCP和UDP进行监控:
平均每秒新增TCP连接数 : 通过/proc/net/snmp文件得到最近240秒内PassiveOpens的增量,除以240得到每秒的平均增量。
机器的TCP连接数 : 通过/proc/net/snmp文件的CurrEstab得到TCP连接数。
平均每秒的UDP接收数据报 : 通过/proc/net/snmp文件得到最近240秒内InDatagrams的增量,除以240得到平均每秒的UDP接收数据报。
平均每秒的UDP发送数据报 : 通过/proc/net/snmp文件得到最近240秒内OutDatagrams的增量,除以240得到平均每秒的UDP发送数据报。
以上两条参考 : http://blog.csdn.net/tenfyguo/article/details/7478584
./tcp : http://blog.csdn.net/zzz_781111/article/details/7976219
./sockstat : http://www.cnblogs.com/jankie/archive/2013/01/30/2882441.html
./arp :
-----------------------------------------------------------------------
IP address HW type Flags HW address Mask Device
192.168.1.151 0x1 0x2 00:e0:4c:19:1a:98 * eth0
192.168.1.1 0x1 0x2 00:14:78:e7:c4:e8 * eth0
-----------------------------------------------------------------------
每个网络接口的arp表中dev包的统计
IP address:IP地址(直连)
HW type:硬件类型
23=0x17 strip (Metricom Starmode IP)
01=0x01 ether (Ethernet)
15=0xf dlci (Frame Relay DLCI)
Flags:
HW address:MAC 地址
Mask:
Device:所在网络接口
其余参考 : http://jlspyaozhongkai.blog.163.com/blog/static/116057464200962724623344/
pagetypeinfo : 可以分析内存碎片的信息;
参数分析 : http://blog.csdn.net/goodluckwhh/article/details/9989695
内存管理 : http://blog.csdn.net/crazyjiang/article/details/7903772
partitions : 硬盘分区情况,提供设备name,major,minor和blocks。
参考:http://blog.csdn.net/nemo2011/article/details/8149736
sched_debug : 调度器信息,显示每个任务的优先级以及运行和睡眠时间。
schedstat : 内核的调度器统计信息。
上两条参考 : http://www.ibm.com/developerworks/cn/linux/l-cfs/
scsi : scsi设备的相关信息
self :
官方解释:This directory refers to the process accessing the /proc filesystem, and is identical to the /proc directory named
by the process ID of the same process.
slabinfo : slab缓存的相关信息。
参考 : http://blog.chinaunix.net/uid-20565779-id-1633920.html
softirqs : 软件中断的触发次数信息
参考 : http://www.kuqin.com/shuoit/20131031/336024.html http://blog.csdn.net/droidphone/article/details/7518428
stat : 包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。
参考 : http://www.cnblogs.com/no7dw/archive/2011/07/04/2097300.html
swaps : 虚拟内存/交换区的使用情况。
sys : 内核中可配置的信息。
参考 : http://blog.chinaunix.net/uid-22159621-id-1789315.html
sysrq-trigger : 关闭/重启/崩溃计算机以及导出内存,cpu的配置信息,重新挂在文件系统等,对root也是不可读的。
参考 : http://blog.csdn.net/choice_jj/article/details/7965676
sysvipc : 查看系统所有msg消息队列,sem信号量和shm共享内存信息.
thread-self : 同self
timer_list : 显示系统当前配置的所有时钟的详细情况,譬如当前系统活动的时钟源设备,时钟事件设备,tick device 等。
timer_stats : 显示当前系统中所有正在使用timer的进程,函数等统计信息,默认是关闭的,echo 1 > /proc/timer_stats
以上两条参考 : http://blog.csdn.net/sunnybeike/article/details/7025123
tty : tty设备信息。
uptime : 显示系统到现在启动和空闲的时间。参考 : http://www.cnblogs.com/frydsh/p/3887357.html
version : 系统,gcc版本信息:
Linux version 3.19.0-25-generic (buildd@lgw01-20) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015
version_signature : 略
vmallocinfo : vmalloc内存区域的使用分配情况;
参考 : http://www.360doc.com/content/15/0107/22/426085_439012564.shtml 和之前的 http://www.360doc.com/content/15/0107/22/426085_439012564.shtml
vmstat : 虚拟内存统计信息。
zoneinfo : 示内存空间的统计信息,对分析虚拟内存行为很有用。
有关内存阀值的计算,参考:
http://www.cnblogs.com/panfeng412/p/drop-caches-under-linux-system-2.html
该文章介绍了如何利用zoneinfo中的信息解决Linux服务器Cache占用过多内存导致系统内存不足问题。
以下是/proc目录中进程N的信息(部分省略)
/proc/N pid为N的进程信息;
/proc/N/cmdline 进程启动命令;
/proc/N/cwd 链接到进程当前工作目录;
/proc/N/environ 进程环境变量列表;
/proc/N/exe 链接到进程的执行命令文件;
/proc/N/fd 包含进程相关的所有的文件描述符;
/proc/N/maps 与进程相关的内存映射信息;
/proc/N/mem 指代进程持有的内存,root不可读;
/proc/N/root 链接到进程的根目录;
/proc/N/stat 进程的状态;
/proc/N/statm 进程使用的内存的状态;
/proc/N/status 进程状态信息,比stat/statm更具可读性;