/proc文件浅析

前言

/proc是一种虚拟文件系统,也叫进程数据文件系统,其信息不是存储在块设备中的,只有在读取/proc目录下文件的时候才会去动态生成。
/proc文件系统可以获得很多进程信息,在调试kernel的过程中很有用。

/proc内容

/proc文件系统的容量依系统而不同(硬件配置、体系结构)。主要包含以下几大类:

  • 系统进程的特征数据
  • 内存管理
  • 文件系统
  • 设备驱动程序
  • 系统总线
  • 电源管理
  • 终端
  • 系统控制参数

从内核开发趋势上看,正在远离使用/proc文件系统的方法。

进程的数据

/proc的初衷就是来传递进程数据

aston@ubuntu:/$ ls /proc/1838/
attr             cwd       map_files   oom_adj        sessionid  timers
autogroup        environ   maps        oom_score      setgroups  timerslack_ns
auxv             exe       mem         oom_score_adj  smaps      uid_map
cgroup           fd        mountinfo   pagemap        stack      wchan
clear_refs       fdinfo    mounts      personality    stat
cmdline          gid_map   mountstats  projid_map     statm
comm             io        net         root           status
coredump_filter  limits    ns          sched          syscall
cpuset           loginuid  numa_maps   schedstat      task

这是进程pid号为1838的进程状态信息。具体信息cat查询即可。

  • environ:表示为该程序所设置的环境变量。
  • maps:列出了进程所使用的库,有点长。。
  • status:包含了进程状态一般信息(text格式)
  • stat和statm:以一连串数字的形式提供进程内存消耗的信息
  • fd:文件夹内有一连串数字文件,表示文件描述符,都是符号链接,链接到对应的文件。
  • cwd:是个符号链接,对应到工作目录
  • exe:是个符号链接,对应到可执行二进制文件
  • root:指向当前进程根目录

一般性系统信息

/proc的子目录包含了进程的一些信息,/proc目录下包含了系统的一般信息,比如iomem、ioports提供了用来与设备通信的内存地址和端口相关信息,都是文本形式的列表。
buddyinfo和slabinfo提供了伙伴系统和slab分配器的使用情况
meminfo给出了一般性内存使用情况,分为高端、低端、空闲内存等
Vmstat给出了内存的其他信息,包含当前在内存管理的各个子系统内存页的数目。
kallsyms和kcore用于支持内核代码调试。前者kallsyms为符号表,给出了所有全局内核变量和函数的地址;kcore是一个动态内核事件,包含了运行中内核所有数据。
interrupts保存了当前操作器件引发的中断说明

网络信息

在/proc/net子目录下提供了各种网络选项数据,有下面有趣的数据项:
udp和tcp:提供了IPv4的tcp和udp的套接字统计数据。
arp:反向地址解析的ARP表
dev:保存了系统通过网络接口传输的数据量的统计数据

系统控制参数

还可以使用sysctl系统调用来动态检查、修改内核行为和系统控制参数。
比如修改/proc/sys目录下的文件

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值