/proc文件系统全面观

一 文件信息

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

文件名称

文件内容
apm高级电源管理信息
cmdline内核命令行
Cpuinfo关于Cpu信息
Devices可以用到的设备(块设备/字符设备)
Dma使用的DMA通道
Filesystems支持的文件系统
Interrupts中断的使用
IoportsI/O端口的使用
Kcore内核核心印象
Kmsg内核消息
Ksyms内核符号表
Loadavg负载均衡
Locks内核锁
Meminfo内存信息
Misc杂项
Modules加载模块列表
Mounts加载的文件系统
Partitions系统识别的分区表
Rtc实时时钟
statCPU利用率,磁盘,内存页,内存对换,全部中断,接触开关以及赏赐自举时间(自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/net anycast6   dev_snmp6  ip6_flowlabel  mcfilter   packet  route      rt_cache  sockstat      tcp     udp6 arp        if_inet6   ip_mr_cache    mcfilter6  psched  rpc        sk98lin   sockstat6     tcp6    unix dev        igmp       ip_mr_vif      netlink    raw     rt6_stats  snmp      softnet_stat  tr_rif  wireless dev_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静态路由表
snmpsnmp agentip/icmp/tcp/udp协议统计;各行交替给出字段名和值
tcpTCP连接的套接口
udpUDP连接的套接口
unixUNIX域套接口的套接口表
 

2 /proc/sys目录

[wuqifu@localhost sys]$ ls /proc/sys debug  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内核所能使用的线程的最大数目
suid_dumpable使用了suid位的是否产生core文件
  
  /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_thresholdINET对端存储器某个合适值,该阀值同样决定生存时间以及废物收集通过的时间间隔。

/proc/sys/net/core 目录中的文件

文件名

描述
optmem_max每个套接字所允许的最大缓冲区的大小
rmem_default接收套接字缓冲区大小的缺省值(以字节为单位)。
rmem_max 
  

  /proc/sys/fs 目录中的文件

文件名

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

已使用文件句柄的数目
文件句柄的最大数目
该文件是只读的,仅用于显示信息。
inode-*操作与索引节点有关,而与文件句柄无关。
overflowuiduid的最大值
overflowgidgid的最大值
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  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值