Linux的proc文件系统详解

简介

/proc 文件系统是一个虚拟文件系统,通过它可以使用一种新的方法在 Linux内核空间和用户间之间进行通信。在 /proc 文件系统中,我们可以将对虚拟文件的读写作为与内核中实体进行通信的一种手段,但是与普通文件不同的是,这些虚拟文件的内容都是动态创建的。
最初开发/proc文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时配置。很多命令,都是通过读写 proc 文件系统,显示系统的当前运行信息
/proc文件系统包含了一些目录(用作组织信息的方式)和虚拟文件。虚拟文件可以向用户呈现内核中的一些信息,也可以用作一种从用户空间向内核发送信息的手段。实际上我们并不会同时需要实现这两点,但是本文将向您展示如何配置这个文件系统进行输入和输出。

[root@ljh2020 ~]# cd /proc
[root@ljh2020 proc]# ls
1     16   25   305   38    51    6403  7     buddyinfo  driver       kcore       misc          self         
10    18   26   306   384   5156  6405  8     bus        execdomains  keys        modules       slabinfo     
1035  19   27   311   39    52    6448  831   cgroups    fb           key-users   mounts        softirqs     
11    2    28   326   396   5521  6450  894   cmdline    filesystems  kmsg        mtrr          stat         
1148  20   29   327   415   563   6473  895   consoles   fs           kpagecount  net           swaps        
12    21   3    3452  4376  568   648   9     cpuinfo    interrupts   kpageflags  pagetypeinfo  sys          
1209  22   300  3494  47    597   65    900   crypto     iomem        loadavg     partitions    sysrq-trigger
1274  23   302  3592  49    599   661   944   devices    ioports      locks       sched_debug   sysvipc
13    24   303  36    5     600   669   96    diskstats  irq          mdstat      schedstat     timer_list
14    244  304  37    50    607   670   acpi  dma        kallsyms     meminfo     scsi          timer_stats

/proc中另外一些可以注意的文件
cpuinfo:它标识了处理器的类型和速度;
pci:显示在PCI总线上找到的设备;
modules:标识了当前加载到内核中的模块

/proc目录下常见的文件介绍:

/proc/apm 

高级电源管理(APM)版本信息及电池相关状态信息,通常由apm命令使用;

/proc/ioports I/O

当前在用的已注册 I/O 端口范围;

proc/buddyinfo

用于诊断内存碎片问题的相关信息文件;

/proc/cmdline

在启动内核时传递至内核的相关参数信息,这些信息通常由lilo或grub等启动管理工具进行传递

[root@ljh2020 ~]# cd /proc
[root@ljh2020 proc]# cat cmdline
BOOT_IMAGE=/boot/vmlinuz-3.10.0-957.21.3.el7.x86_64 root=UUID=1114fe9e-2309-4580-b183-d778e6d97397 ro crashkernel=auto rhgb quiet LANG=en_US.UTF-8 idle=halt biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8 noibrs

cmdline 文件记录相关进程的启动命令,包括这个命令后面带的参数 ,并描述这个进程的信息

[root@ljh2020 6520]# cat cmdline
/opt/jdk1.8.0_161/bin/java-Djava.util.logging.config.file=/root/apache-tomcat-9.0.31/conf/logging.properties-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djdk.tls.ephemeralDHKeySize=2048-Djava.protocol.handler.pkgs=org.apache.catalina.webresources-Dorg.apache.catalina.security.SecurityListener.UMASK=0027-Dignore.endorsed.dirs=-classpath/root/apache-tomcat-9.0.31/bin/bootstrap.jar:/root/apache-tomcat-9.0.31/bin/tomcat-juli.jar-Dcatalina.base=/root/apache-tomcat-9.0.31-Dcatalina.home=/root/apache-tomcat-9.0.31-Djava.io.tmpdir=/root/apache-tomcat-9.0.31/temporg.apache.catalina.startup.Bootstrapstart

比如这里就可以看到相应启动tomcat程序后所产生的tomcat这个进程的信息

/proc/cpuinfo 

CPU的硬件信息 (型号, 家族, 缓存大小等);

/proc/crypto 

系统上已安装的内核使用的密码算法及每个算法的详细信息列表;

/proc/devices 

系统已经加载的所有块设备和字符设备的信息,包含主设备号和设备组(与主设备号对应的设备类型)名;

/proc/dma 

每个正在使用且注册的ISA DMA通道的信息列表;

/proc/fb 

帧缓冲设备列表文件,包含帧缓冲设备的设备号和相关驱动信息;

/proc/filesystems 

当前被内核支持的文件系统类型列表文件,被标示为nodev的文件系统表示不需要块设备的支持;通常mount一个设备时,如果没有指定文件系统类型将通过此文件来决定其所需文件系统的类型;

/proc/interrupts 

ARM体系架构系统上每个IRQ相关的中断号列表,中断的使用及触发次数,调试中断时很有用;

/proc/iomem 

每个物理设备上的记忆体(RAM或者ROM)在系统内存中的映射信息;

/proc/kmsg 

此文件用来保存由内核输出的信息,可以用该文件取代系统调用 syslog(2) 来记录内核日志信息,对应dmesg命令;

/proc/meminfo 

系统中关于物理内存、交换空间等的信息,系统内存占用情况;可以使用文件查看命令直接读取此文件,其内容显示为两列,前者为统计属性,后者为对应的值;

/proc/modules 

当前装入内核的所有模块名称列表,可以由lsmod命令使用,也可以直接查看;如下所示,其中第一列表示模块名,第二列表示此模块占用内存空间大小,第三列表示此模块有多少实例被装入,第四列表示此模块依赖于其它哪些模块,第五列表示此模块的装载状态(Live:已经装入;Loading:正在装入;Unloading:正在卸载),第六列表示此模块在内核内存(kernel memory)中的偏移量;

/proc/partitions 

块设备每个分区的主设备号(major)和次设备号(minor)等信息,同时包括每个分区所包含的块(block)数目,如下图所示;

/proc/slabinfo 

在内核中频繁使用的对象(如inode、dentry等)都有自己的cache,即slab pool,而/proc/slabinfo文件列出了这些对象相关slap的信息;

/proc/uptime 

系统上次启动以来的运行时间,如下所示,其第一个数字表示系统运行时间,第二个数字表示系统空闲时间,单位是秒;

/proc/version 

当前系统运行的内核版本号;

/proc/zoneinfo 

内存区域(zone)的详细信息列表,信息量较大;

/proc/kcore

该伪文件以 core 文件格式给出了系统的物理内存映象(比较有用),可以用 GDB 查探当前内核的任意数据结构。该文件的总长度是物理内存 (RAM) 的大小再加上 4KB;

/proc/kallsym

内核符号表,该文件保存了内核输出的符号定义, modules(X)使用该文件动态地连接和捆绑可装载的模块

/proc/loadavg

负载均衡,平均负载数给出了在过去的 1、 5,、15 分钟里在运行队列里的任务数、总作业数以及正在运行的作业总数。

/proc/locks

内核锁 ;

/proc/mounts

已加载的文件系统的列表,对应mount命令,无参数;

/proc/stat

全面统计状态表,CPU内存的利用率等都是从这里提取数据,对应ps命令;

/proc/swaps

对换空间的利用情况;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值