Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > /proc文件系统全面观
【标  题】:/proc文件系统全面观
【关键字】:/proc
【来  源】:http://blog.csdn.net/wqf363/archive/2006/10/31/1359189.aspx

/proc文件系统全面观

Your Ad Here

一 文件信息

proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。它的目录结构如下:

文件名称

文件内容
apm 高级电源管理信息
cmdline 内核命令行
Cpuinfo 关于Cpu信息
Devices 可以用到的设备(块设备/字符设备)
Dma 使用的DMA通道
Filesystems 支持的文件系统
Interrupts 中断的使用
Ioports I/O端口的使用
Kcore 内核核心印象
Kmsg 内核消息
Ksyms 内核符号表
Loadavg 负载均衡
Locks 内核锁
Meminfo 内存信息
Misc 杂项
Modules 加载模块列表
Mounts 加载的文件系统
Partitions 系统识别的分区表
Rtc 实时时钟
stat CPU利用率,磁盘,内存页,内存对换,全部中断,接触开关以及赏赐自举时间(自197011起的秒数)。

二 系统目录 

并不是所有这些目录在你的系统中都有,这取决于你的内核配置和装载的模块。另外,在/proc下还有三个很重要的目录:netscsisysSys目录是可写的,可以通过它来访问或修改内核的参数(见下一部分),而netscsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi目录不存在。

目录名称

目录内容
net 网络配置参数
sys 可写,修改系统内核参数
scsi 可选,列出了所有检测到的SCSI设备的文件

三 进程目录及其文件

除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc 下,以进程的PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个linkProc文件系统的名字就是由之而起。进程目录的结构如下:

进程目录

目录内容
Cmdline 命令行参数
Environ 环境变量值
Fd 一个包含所有文件描述符的目录
Mem 进程的内存被利用情况
Stat 进程状态
Status 进程当前状态,以可读的方式显示出来
Cwd 当前工作目录的链接
Exe 指向该进程的执行命令文件
Maps 内存映象
Statm 进程内存状态信息
Root 链接此进程的root目录

四 修改内核配置参数

1) 改变内核的参数

只要用vi编辑或echo参数重定向到文件中即可。下面有一个例子:

# cat /proc/sys/fs/file-max
4096
# echo 8192 > /proc/sys/fs/file-max
# cat /proc/sys/fs/file-max
8192

如果你优化了参数,则可以把它们写成添加到文件rc.local中,使它在系统启动时自动完成修改。

2) 持久改变内核参数

这里提供了一个方便的实用程序,用于更改 /proc/sys 目录下的任何内核参数。它使您可以更改运行中的内核(类似于上面用到的 echo 和重定向方法),但它还有一个在系统引导时执行的配置文件。这使您可以更改运行中的内核,并将这些更改添加到配置文件,以便于在系统重新引导之后,这些更改仍然生效。


该实用程序称为 sysctl,在 sysctl(8) 的联机帮助页中,对这个实用程序进行了完整的文档说明。sysctl 的配置文件是 /etc/sysctl.conf,可以编辑该文件,并在 sysctl.conf(8) 下记录了该文件。sysctl /proc/sys 下的文件视为可以更改的单个变量。所以,以 /proc/sys 下的文件 /proc/sys/fs/file-max 为例,它表示系统中所允许的文件句柄的最大数目,这个文件被表示成 fs.file-max /proc/sys 中的文件转换成 sysctl 中的变量有两个简单的规则:
去掉前面部分 /proc/sys

将文件名中的正斜杠变为点。

这两条规则使您能将 /proc/sys 中的任一文件名转换成 sysctl 中的任一变量名。一般文件到变量的转换为:
/proc/sys/dir/file --> dir.file
dir1.dir2.file --> /proc/sys/dir1/dir2/file

可以使用命令 sysctl -a 查看所有可以更改的变量和其当前设置。
sysctl 还可以更改变量,它所做的工作与上面所用的 echo 方法完全一样。其表示法为:还是用 file-max 作为示例,使用下面两种方法中的一种将该值更改为 16384
sysctl -w fs.file-max="16384"

五 系统目录下的文件目录

1) /proc/net 目录

 [wuqifu@localhost net]$ ls /proc/netanycast6   dev_snmp6  ip6_flowlabel  mcfilter   packet  route      rt_cache  sockstat      tcp     udp6arp        if_inet6   ip_mr_cache    mcfilter6  psched  rpc        sk98lin   sockstat6     tcp6    unixdev        igmp       ip_mr_vif      netlink    raw     rt6_stats  snmp      softnet_stat  tr_rif  wirelessdev_mcast  igmp6      ipv6_route     netstat    raw6    rt_acct    snmp6     stat          udp

文件名称

文件内容
arp 转储每个网络接口的arp表中dev包的统计
dev 来自网络设备的统计
dev_mcast 列出二层(数据链路层)多播组
igmp 加入的IGMP多播组
netstat    网络流量的多种统计。第一行是信息头,带有每个变量的名称。接下来的一行保存相应变量的值
sockstat         列出使用的tcp/udp/raw/pac/syc_cookies的数量
raw     原始套接口的套接口表
rt6_stats  
rt_acct   
route 静态路由表
snmp snmp agentip/icmp/tcp/udp协议统计;各行交替给出字段名和值
tcp TCP连接的套接口
udp UDP连接的套接口
unix UNIX域套接口的套接口表
 

2 /proc/sys目录

[wuqifu@localhost sys]$ ls /proc/sysdebug  dev  fs  kernel  net  proc  sunrpc  vm 

目录名称

目录内容
kernel 内核参数
net 内核网络配置参数
fs 文件配置参数
proc 进程配置参数
vm 缓冲区,内存
dev 系统设备
debug  
sunrpc  
  /proc/sys/kernel/ 目录中的文件

文件名

描述
threads-max 内核可运行的最大任务数。
ctrl-alt-del 如果值为 1,那么顺序按下这几个键将彻底地重新引导系统。
sysrq 如果值为 1Alt-SysRq 则为激活状态。
osrelease 显示操作系统的发行版版本号
ostype 显示操作系统的类型。
hostname 系统的主机名。
domainname 网络域,系统是该网络域的一部分。
modprobe 指定 modprobe 是否应该在启动时自动运行并加载必需的模块。
acct 该文件有三个可配置值,根据包含日志的文件系统上可用空间的数量(以百分比表示),这些值控制何时开始进行进程记帐
msgmax 从一个进程发送到另一个进程的消息的最大长度。
msgmnb 在一个消息队列中最大的字节数。
msgmni 消息队列标识的最大数目
panic 零(0)秒设置在发生内核严重错误时将禁止重新引导。
printk 该文件有四个数字值,它们根据日志记录消息的重要性,定义将其发送到何处。该文件的四个值为:

控制台日志级别:优先级高于该值的消息将被打印至控制台

缺省的消息日志级别:将用该优先级来打印没有优先级的消息
最低的控制台日志级别:控制台日志级别可被设置的最小值(最高优先级)
缺省的控制台日志级别:控制台日志级别的缺省值
threads-max 内核所能使用的线程的最大数目
   
   
 /proc/sys/net/ipv4 目录中的文件 所有 IPv4 IPv6 的参数都被记录在内核源代码文档中。请参阅文件 /usr/src/linux/Documentation/networking/ip-sysctl.txt

文件名

描述
ip_forward 在网络本地接口之间转发数据报
ip_default_ttl 表示IP数据报的Time To Live
ip_no_pmtu_disc 关闭路径MTU探测,默认值为FALSE
ipfrag_high_thresh 用来组装分段的IP包的最大内存量
ipfrag_low_thresh  
ipfrag_time 保存一个IP分片在内存中的时间
inet_peer_threshold INET对端存储器某个合适值,该阀值同样决定生存时间以及废物收集通过的时间间隔。
 /proc/sys/net/core 目录中的文件

文件名

描述
optmem_max 每个套接字所允许的最大缓冲区的大小
rmem_default 接收套接字缓冲区大小的缺省值(以字节为单位)。
rmem_max  
   
  /proc/sys/fs 目录中的文件

文件名

描述
file-max 可以分配的文件句柄的最大数目
file-nr 该文件与 file-max 相关,它有三个值:
已分配文件句柄的数目

已使用文件句柄的数目
文件句柄的最大数目
该文件是只读的,仅用于显示信息。
inode-* 操作与索引节点有关,而与文件句柄无关。
overflowuid uid的最大值
overflowgid gid的最大值
super-max 超级块处理程序的最大数目
super-nr 显示当前已分配超级块的数目。该文件是只读的,仅用于显示信息。
 /proc/sys/vm 目录中的文件

文件名

描述
freepages 该文件控制系统如何应对各种级别的可用内存
kswapd 该文件控制允许内核如何交换内存
pagecache 针对文件的内存映射和一般高速缓存。

参考文献:

http://www.faq-it.org/archives/linux_basic/9ed4777508c82a3fa7048252a17cf6f3.php

http://www.linuxsir.org/bbs/showthread.php?threadid=57792  

Linux系统命令分类详解:【上一篇】
解决gdb调试时行号错位--文件格式转换:【下一篇】
【相关文章】
  • 用CreateToolhelp32Snapshot/Process32First/Process32Next API枚举系统进程
  • 使用 /proc 文件系统来访Linux 内核的内容
  • Linux中/proc目录下文件详解(转贴)
  • 5./proc 文件系统
  • 6.使用 /proc 作为输入
  • 坏了坏了,以后用/proc读取Linux系统信息可能要给联想交专利费了
  • /proc虚拟文件系统
  • 修改/proc目录下的参数优化网络性能
  • /proc/sys目录下的部分参数的优化调整
  • 观察Linux行为(通过/proc)
  • 【随机文章】
  • 用Visual C#做WinForm组件
  • [课程1.1]从素数问题看对象思维方式
  • 最简单的实现层的可拉伸功能
  • ANT打包编译部署工具学习笔记
  • 用Dreamweaver MX打造自已的Blog
  • Struts 1.x中批量封装对象
  • 让PJBLOG上传的图片打上水印!!!
  • 下载狂必看:解决BT和浏览网页在SP2中的冲突
  • 变革与突破—如何认识基于构件的软件开发方法
  • SQL循序渐进(16)数学运算符
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.