/proc文件系统

Linux将一切事物都看作文件,即便硬件设备在文件系统中也有相应的条目,用于与设备驱动程序进行通信的工具在过去就已经十分的常见,例如,hdparm可以用来配置一些磁盘参数,

ifconfig可以报告网络统计信息。近年来,倾向于提供更一致的方式来访问驱动程序的信息。事实上,这种一致的方式甚至延伸到包括与Linux内核的各种元素的通信。

Linux提供了一个特殊的文件系统procfs,它通常以/proc目录的形式呈现。该目录中包含了许多特殊文件用来对驱动程序和内核信息进行更高层次的访问只要应用程序有正确的访问权限,

它们就可以通过读写这些文件来获得信息或设置参数。

/proc目录中的文件会随系统的不同而不同,当Linux版本中有更多的驱动程序和设施支持procfs文件系统是,该目录中就会包含更多的文件。下面,总结一下/proc目录中的常用文件。

我的电脑上的/proc目录列表包括如下内容:

在大多数情况下,只需直接读取这些文件就可以获得状态信息。例如,/proc/cpuinfo给出的是cpu的详细信息:

类似地,/proc/meminfo和/proc/version分别给出的是内存的使用情况和内核版本信息,每次读取这些文件的内容时,提供的信息都会及时的更新。

同时,通过特定内核参数还可以获取更多的信息,它们位于/proc目录的子目录中。例如,通过/proc/net/sockstat文件获得网络套接字的使用统计:

/proc目录中的有些条目不仅可以被读取,而且可以被修改。例如,系统中所运行的程序同时能打开的文件总数是Linux内核的一个参数,它的当前值可通过读取/proc/sys/fs/file-max文件得到:

这个值别设置为309943.如果需要改变该值,则可以通过写同一个文件来实现。当然,此时需要超级用户的权限。sudo echo 400000 >/proc/sys/fs/file-max

在/proc目录中以数字命名的子目录用于提供正在运行的程序的信息。可以通过要查找进程的PID来获取关于该进程的更多细节,下面随机访问一个进程的部分内容:

从上面的输出中可以很清楚的知道程序/usr/bin/zsh正在运行,它的当前工作目录是/home/thinker。这也是得到进程运行目录和所在目录的简单方法。

总结:/proc文件系统可用于获取驱动程序和内核信息以及正在运行进程的详细细节。

posted @ 2014-02-12 15:29  thinker-lj  Views(958)  Comments(0Edit  收藏  举报