对/proc文件系统进行读写操作

来源:互联网 发布:mac测速工具 编辑:程序博客网 时间:2024/06/05 01:01

http://edsionte.com/techblog/archives/3030/comment-page-1

 

本博客之前的文章中多次涉及到/proc文件系统,下面的几条命令都在曾经的文章中出现过:

view source
print?
1cat /proc/interrupts
2cat /proc/devices
3cat /proc/kallsyms | grep super_blocks

第一条命令用于查看系统内已注册的中断信息,包括中断号、已接受的手段请求和驱动器名称等;第二条命令用于查看系统内已注册的字符设备和块设备信息,包括设备号和设备名称;第三条命令用于在内核符号表中检索super_blocks符号的的地址,kallsyms文件包括内核中所有的标示符及其地址。

1.概述

proc即process的缩写,最初的proc文件系统只是存放进程的相关信息。但现在的/proc文件系统除此之外还包含系统的状态信息和配置信息。
通过ls命令就可以查看/proc文件系统所包含的内容。

 
1edsionte@edsionte-desktop:/proc$ ls
21      1290   1469  1541  1627   19612  29    49    9          dri              mdstat          sys
310     13     1471  1544  1630   19613  3     5     908        driver           meminfo         sysrq-trigger
41013   1301   1474  1548  1632   19629  30    50    913        edsionte_procfs  misc            sysvipc
5…………

其中以数字为名的目录即为系统中正在运行的进程信息,数字即为进程的pid。比如我们可以进入init进程的目录,查看它的地址空间:

 
01edsionte@edsionte-desktop:/proc/1$sudo cat maps
02[sudo] passwordfor edsionte:
0300110000-00263000 r-xp 00000000 08:07 704702     /lib/tls/i686/cmov/libc-2.11.1.so
0400263000-00264000 ---p 00153000 08:07 704702     /lib/tls/i686/cmov/libc-2.11.1.so
0500264000-00266000 r--p 00153000 08:07 704702     /lib/tls/i686/cmov/libc-2.11.1.so
0600266000-00267000 rw-p 00155000 08:07 704702     /lib/tls/i686/cmov/libc-2.11.1.so
0700267000-0026a000 rw-p 00000000 00:00 0
080026a000-00272000 r-xp 00000000 08:07 704713     /lib/tls/i686/cmov/libnss_nis-2.11.1.so
0900272000-00273000 r--p 00007000 08:07 704713     /lib/tls/i686/cmov/libnss_nis-2.11.1.so
1000273000-00274000 rw-p 00008000 08:07 704713     /lib/tls/i686/cmov/libnss_nis-2.11.1.so
1100471000-0048b000 r-xp 00000000 08:07 1048610    /sbin/init
12…………

除了查看进程的相关信息,我们还可以通过打印相关文件来查看系统的当前运行状态。比如查看当前内存的使用情况:

 
1edsionte@edsionte-desktop:/proc$ cat meminfo
2MemTotal:         961368 kB
3MemFree:          145264 kB
4Buffers:           31648 kB
5Cached:           297716 kB
6SwapCached:        14436 kB
7…………

总之,/proc文件系统相当于内核的一个快照,该目录下的所有信息都是动态的从正在运行的内核中读取。

基于这种原因,/proc文件系统就成为了用户和内核之间交互的接口。一方面,用户可以从/proc文件系统中读取很多内核释放出来的信息;另一方面,内核也可以在恰当的时候从用户那里得到输入信息,从而改变内核的相关状态和配置。

相比传统的文件系统,/proc是一种特殊的文件系统,即虚拟文件系统。这里的虚拟是强调/proc文件系统下的所有文件都存在于内存中而不是磁盘上。也就是说/proc文件系统只占用内存空间,而不占用系统的外存空间。

 

=============================================================
最近在学linux /proc文件系统的相关内容,特地挑选几篇网上优秀的相关文章如下:
1.理解/proc文件系统
http://linux.chinaunix.net/doc/2004-10-05/16.shtml
2.什么是/proc文件系统
http://blog.chinaunix.net/u1/55764/showart_1101797.html
3.使用/proc文件系统来访问Linux内核的内容
http://www.ibm.com/developerworks/cn/linux/l-proc.html
4.linux /proc文件系统操作指南
http://www.lupaworld.com/22802/viewspace_42440.html
5.linux /proc文件系统
http://man.chinaunix.net/linux/mandrake/101/zh_cn/Command-Line.html/ch10s01.html
6.Linux内核模块编程/proc 文件系统
http://www.itfensi.com/soft/linux/dev/11674075331844.html
7.linux /proc文件系统编程
http://www.clinux.org/node/28004
http://linux.sheup.com/linux/linux28.htm
8./proc文件系统分析(二)
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=200166&page=82&view=collapsed&sb=5&o=all
9./proc文件系统分析(四)
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=linuxK&Number=200168&page=82&view=collapsed&
10./proc文件系统5大功能
http://www.builder.com.cn/2004/0212/106646.shtml
11./proc目录详解
http://blog.csdn.net/ne2000/archive/2005/12/09/548009.aspx

 

 

0 0
原创粉丝点击