Linux 系统的文件类型大致可分为三类: 普通文件, 目录文件和伪文件. 伪文件不是用来存储数据的, 因此这些文件不占用磁盘空间, 只是存在于内存中. /proc 让你可以与内核内部数据进行交互, 获取有关进程的有用信息.
下面主要介绍一下 /proc 下面的四个文件: /proc/stat , /proc/meminfo , /proc/<pid>/stat , /proc/<pid>/status.
/proc/stat 存放系统的 CPU 时间, 该文件包含了所有 CPU 活动的信息.
/proc/meminfo 存放系统的内存信息, 通过文件中各个变量的名字便可知其代表的信息.
/proc/<pid>/stat 存放某个进程的 CPU 信息
/proc/<pid>/status 存放某个进程的 CPU 信息以及一些综合信息
more /proc/2674/cmdline
mem - 当前进程所占用的内存空间, 由 open,read 和 lseek 等系统调用使用, 不能被用户读取;
statm - 当前进程占用内存的状态信息, 通常以 "页面"(page) 表示;
status - 与 stat 所提供信息类似, 但可读性较好, 如下所示, 每行表示一个属性信息; 其详细介绍请参见 proc 的 man 手册页;
task - 目录文件, 包含由当前进程所运行的每一个线程的相关信息, 每个线程的相关信息文件均保存在一个由线程号 (tid) 命名的目录中, 这类似于其内容类似于每个进程目录中的内容;(内核 2.6 版本以后支持此功能)
/proc/iomem
每个物理设备上的记忆体 (RAM 或者 ROM) 在系统内存中的映射信息;
- [[email protected] ~]# more /proc/iomem
- 00000000-0009f7ff : System RAM
- 0009f800-0009ffff : reserved
- 000a0000-000bffff : Video RAM area
- 000c0000-000c7fff : Video ROM
- ............
- /proc/kcore
系统使用的物理内存, 以 ELF 核心文件 (core file) 格式存储, 其文件大小为已使用的物理内存 (RAM) 加上 4KB; 这个文件用来检查内核数据结构的当前状态, 因此, 通常由 GBD 通常调试工具使用, 但不能使用文件查看命令打开此文件;
/proc/loadavg
保存关于 CPU 和磁盘 I/O 的负载平均值, 其前三列分别表示每 1 秒钟, 每 5 秒钟及每 15 秒的负载平均值, 类似于 uptime 命令输出的相关信息; 第四列是由斜线隔开的两个数值, 前者表示当前正由内核调度的实体 (进程和线程) 的数目, 后者表示系统当前存活的内核调度实体的数目; 第五列表示此文件被查看前最近一个由内核创建的进程的 PID;
- [[email protected] ~]# more /proc/loadavg
- 0.45 0.12 0.04 4/125 5549
- [[email protected] ~]# uptime
06:00:54 up 1:06, 3 users, load average: 0.45, 0.12, 0.04
/proc/meminfo
系统中关于当前内存的利用状况等的信息, 常由 free 命令使用; 可以使用文件查看命令直接读取此文件, 其内容显示为两列, 前者为统计属性, 后者为对应的值;
- [[email protected] ~]# Less /proc/meminfo
- MemTotal: 515492 kB
- MemFree: 8452 kB
- Buffers: 19724 kB
- Cached: 376400 kB
- SwapCached: 4 kB
- ............
- /proc/modules
当前装入内核的所有模块名称列表, 可以由 lsmod 命令使用, 也可以直接查看; 如下所示, 其中第一列表示模块名, 第二列表示此模块占用内存空间大小, 第三列表示此模块有多少实例被装入, 第四列表示此模块依赖于其它哪些模块, 第五列表示此模块的装载状态 (Live: 已经装入; Loading: 正在装入; Unloading: 正在卸载), 第六列表示此模块在内核内存 (kernel memory) 中的偏移量;
- [[email protected] ~]# more /proc/modules
- autofs4 24517 2 - Live 0xe09f7000
- hidp 23105 2 - Live 0xe0a06000
- rfcomm 42457 0 - Live 0xe0ab3000
- l2cap 29505 10 hidp,rfcomm, Live 0xe0aaa000
- ............
- /proc/stat
实时追踪自系统上次启动以来的多种统计信息; 如下所示, 其中,
"cpu" 行后的八个值分别表示以 1/100(jiffies) 秒为单位的统计值 (包括系统运行于用户模式, 低优先级用户模式, 运系统模式, 空闲模式, I/O 等待模式的时间等);
"intr" 行给出中断的信息, 第一个为自系统启动以来, 发生的所有的中断的次数; 然后每个数对应一个特定的中断自系统启动以来所发生的次数;
"ctxt" 给出了自系统启动以来 CPU 发生的上下文交换的次数.
"btime" 给出了从系统启动到现在为止的时间, 单位为秒;
"processes (total_forks) 自系统启动以来所创建的任务的个数目;"procs_running": 当前运行队列的任务的数目;"procs_blocked": 当前被阻塞的任务的数目;
- [[email protected] ~]# more /proc/stat
- CPU 2751 26 5771 266413 2555 99 411 0
- cpu0 2751 26 5771 266413 2555 99 411 0
- intr 2810179 2780489 67 0 3 3 0 5 0 1 0 0 0 1707 0 0 9620 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5504 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 12781 0 0 0
- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- ctxt 427300
- btime 1234084100
- processes 3491
- procs_running 1
- procs_blocked 0
- /proc/swaps
当前系统上的交换分区及其空间利用信息, 如果有多个交换分区的话, 则会每个交换分区的信息分别存储于 / proc/swap 目录中的单独文件中, 而其优先级数字越低, 被使用到的可能性越大; 下面是作者系统中只有一个交换分区时的输出信息;
- [[email protected] ~]# more /proc/swaps
- Filename Type Size Used Priority
- /dev/sda8 partition 642560 0 -1
- /proc/vmstat
当前系统虚拟内存的多种统计数据, 信息量可能会比较大, 这因系统而有所不同, 可读性较好; 下面为作者机器上输出信息的一个片段;(2.6 以后的内核支持此文件)
- [[email protected] ~]# more /proc/vmstat
- nr_anon_pages 22270
- nr_mapped 8542
- nr_file_pages 47706
- nr_slab 4720
- nr_page_table_pages 897
- nr_dirty 21
- nr_writeback 0
- ............
- /proc/zoneinfo
内存区域 (zone) 的详细信息列表, 信息量较大, 下面列出的是一个输出片段:
- [[email protected] ~]# more /proc/zoneinfo
- Node 0, zone DMA
- pages free 1208
- min 28
- low 35
- high 42
- active 439
- inactive 1139
- scanned 0 (a: 7 i: 30)
- spanned 4096
- present 4096
- nr_anon_pages 192
- nr_mapped 141
- nr_file_pages 1385
- nr_slab 253
- nr_page_table_pages 2
- nr_dirty 523
- nr_writeback 0
- nr_unstable 0
- nr_bounce 0
- protection: (0, 0, 296, 296)
- pagesets
- all_unreclaimable: 0
- prev_priority: 12
- start_pfn: 0
- ............
- /proc/diskstats
每块磁盘设备的磁盘 I/O 统计信息列表;(内核 2.5.69 以后的版本支持此功能)
/proc/cpuinfo
处理器的相关信息的文件;
来源: http://www.bubuko.com/infodetail-3502570.html