Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1654467
  • 博文数量: 82
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2017-12-09 12:58
文章分类

全部博文(82)

文章存档

2011年(7)

2010年(3)

2009年(11)

2008年(4)

2007年(57)

我的朋友

分类: LINUX

2009-11-17 15:54:13

proc文件系统全面观

一 文件信息

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 内核所能使用的线程的最大数目
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_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 针对文件的内存映射和一般高速缓存。


阅读(699) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~