linux proc文件系统学习.pdf
《linux proc文件系统学习.pdf》由会员分享,可在线阅读,更多相关《linux proc文件系统学习.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、linux proc 文件系统学习文件系统学习 目录:/proc-一个虚拟文件系统 加载 proc 文件系统 察看/proc 的文件 得到有用的系统/内核信息 有关运行中的进程的信息 通过/proc 与内核交互 结论 参考文献 摘要:Linux 内核提供了一种通过/proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。尽管在各种硬件平台上的 Linux 系统的/proc 文件系统的基本概念都是相同的,但本文只讨论基于 intel x86 架构的 Linux/proc 文件系统。_ _ _ 一./proc-一个虚拟文件系统/proc 文件系统是一种内核和内核模块用来向进程(pro
2、cess)发送信息的机制(所以叫做/proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中(on the fly)改变设置(通过改变内核参数)。与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。如果你察看文件/proc/mounts(和 mount 命令一样列出所有已经加载的文件系统),你会看到其中 一行是这样的:grep proc/proc/mounts/proc/proc proc rw 0 0/proc 由内核控制,没有承载/proc 的设备。因为/proc 主要存放由内核控制的状态信息,所以大部分这些信息的逻辑位置位于内核控制的内存。
3、对/proc 进行一次 ls-l 可以看到大部分文件都是 0 字节大的;不过察看这些文件的时候,确实可以看到一些信息。这怎么可能?这是因为/proc 文件系统和其他常规的文件系统一样把自己注册到虚拟文件系统层(VFS)了。然而,直到当 VFS 调用它,请求文件、目录的 i-node 的时候,/proc 文件系统才根据内核中的信息建立相应的文件和目录。二.加载 proc 文件系统 如果系统中还没有加载 proc 文件系统,可以通过如下命令加载 proc 文件系统:mount-t proc proc/proc 上述命令将成功加载你的 proc 文件系统。更多细节请阅读 mount 命令的 man
4、page。三.察看/proc 的文件/proc 的文件可以用于访问有关内核的状态、计算机的属性、正在运行的进程的状态等信息。大部分/proc 中的文件和目录提供系统物理环境最新的信息。尽管/proc 中的文件是虚拟的,但它们仍可以使用任何文件编辑器或像more,less或 cat这样的程序来查看。当编辑程序试图打开一个虚拟文件时,这个文件就通过内核中的信息被凭空地(on the fly)创建了。这是一些我从我的系统中得到的一些有趣结果:$ls-l/proc/cpuinfo-r-r-r-1 root root 0 Dec 25 11:01/proc/cpuinfo$file/proc/cpuin
5、fo/proc/cpuinfo:empty$cat/proc/cpuinfo processor:0 vendor_id:GenuineIntel cpu family:6 model:8 model name:Pentium III(Coppermine)stepping:6 cpu MHz:1000.119 cache size:256 KB fdiv_bug:no hlt_bug:no sep_bug:no f00f_bug:no coma_bug:no fpu:yes fpu_exception:yes cpuid level:2 wp:yes flags:fpu vme de pse
6、 tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr xmm bogomips:1998.85 processor:3 vendor_id:GenuineIntel cpu family:6 model:8 model name:Pentium III(Coppermine)stepping:6 cpu MHz:1000.119 cache size:256 KB fdiv_bug:no hlt_bug:no sep_bug:no f00f_bug:no coma_bug:no fpu:yes fpu_except
7、ion:yes cpuid level:2 wp:yes flags:fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr xmm bogomips:1992.29 这是一个从双 CPU 的系统中得到的结果,上述大部分的信息十分清楚地给出了这个系统的有用的硬件信息。有些/proc 的文件是经过编码的,不同的工具可以被用来解释这些编码过的信息并输出成可读的形式。这样的工具包括:top,ps,apm 等。四.得到有用的系统/内核信息 proc 文件系统可以被用于收集有用的关于系统和运行中的内
8、核的信息。下面是一些重要的文件:/proc/cpuinfo-CPU 的信息(型号,家族,缓存大小等)/proc/meminfo-物理内存、交换空间等的信息 /proc/mounts-已加载的文件系统的列表 /proc/devices-可用设备的列表 /proc/filesystems-被支持的文件系统 /proc/modules-已加载的模块 /proc/version-内核版本 /proc/cmdline-系统启动时输入的内核命令行参数 proc 中的文件远不止上面列出的这么多。想要进一步了解的读者可以对/proc 的每一个文件都more一下或读参考文献1获取更多的有关/proc 目录中的文
9、件的信息。我建议使用more而不是cat,除非你知道这个文件很小,因为有些文件(比如 kcore)可能会非常长。五.有关运行中的进程的信息/proc 文件系统可以用于获取运行中的进程的信息。在/proc 中有一些编号的子目录。每个编号的目录对应一个进程 id(PID)。这样,每一个运行中的进程/proc 中都有一个用它的 PID 命名的目录。这些子目录中包含可以提供有关进程的状态和环境的重要细节信息的文件。让我们试着查找一个运行中的进程。$ps-aef|grep mozilla root 32558 32425 8 22:53 pts/1 00:01:23/usr/bin/mozilla 上述
10、命令显示有一个正在运行的 mozilla 进程的 PID 是 32558。相对应的,/proc 中应该有一个名叫 32558 的目录$ls-l/proc/32558 total 0-r-r-r-1 root root 0 Dec 25 22:59 cmdline-r-r-r-1 root root 0 Dec 25 22:59 cpu lrwxrwxrwx 1 root root 0 Dec 25 22:59 cwd->/proc/-r-1 root root 0 Dec 25 22:59 environ lrwxrwxrwx 1 root root 0 Dec 25 22:59 exe
11、->/usr/bin/mozilla*dr-x-2 root root 0 Dec 25 22:59 fd/-r-r-r-1 root root 0 Dec 25 22:59 maps-rw-1 root root 0 Dec 25 22:59 mem-r-r-r-1 root root 0 Dec 25 22:59 mounts lrwxrwxrwx 1 root root 0 Dec 25 22:59 root->/-r-r-r-1 root root 0 Dec 25 22:59 stat-r-r-r-1 root root 0 Dec 25 22:59 statm-r-r-
12、r-1 root root 0 Dec 25 22:59 status 文件 cmdline 包含启动进程时调用的命令行。envir 进程的环境变量。status 是进程的状态信息,包括启动进程的用户的用户 ID(UID)和组 ID(GID),父进程ID(PPID),还有进程当前的状态,比如Sleelping和Running。每个进程的目录都有几个符号链接,cwd是指向进程当前工作目录的符号链接,exe指向运行进程的可执行程序,root指向被这个进程看作是根目录的目录(通常是/)。目录fd包含指向进程使用的文件描述符的链接。cpu仅在运行 SMP 内核时出现,里面是按 CPU 划分的进程时间。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux proc文件系统学习 proc 文件系统 学习
限制150内