Linux系统中的/proc文件系统有什么用?

如题所述

  Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、 改变内核设置的机制。尽管在各种硬件平台上的 Linux 系统的 /proc 文件系统的 基本概念都是相同的,但本文只讨论基于 intel x86 架构的 Linux /proc 文件系 统。   /proc --- 一个虚拟文件系统   /proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。如果你察看文件 /proc/mounts (和 mount 命令一样列出所有已经加载的文件系统),你会看到其中 一行是这样的:   代码如下:   grep proc /proc/mounts   /proc /proc proc rw 0 0   /proc 由内核控制,没有承载 /proc 的设备。因为 /proc 主要存放由内核控制 的状态信息,所以大部分这些信息的逻辑位置位于内核控制的内存。对 /proc 进行 一次 'ls -l' 可以看到大部分文件都是 0 字节大的;不过察看这些文件的时候,确 实可以看到一些信息。这怎么可能?这是因为 /proc 文件系统和其他常规的文件系 统一样把自己注册到虚拟文件系统层 (VFS) 了。然而,直到当 VFS 调用它,请求 文件、目录的 i-node 的时候,/proc 文件系统才根据内核中的信息建立相应的文件 和目录。   加载 proc 文件系统   如果系统中还没有加载 proc 文件系统,可以通过如下命令加载 proc 文件系统:   代码如下:   mount -t proc proc /proc   察看 /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/cpuinfo   /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 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_exception : 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 文件系统可以被用于收集有用的关于系统和运行中的内核的信息。下面是一些重要 的文件:   /proc/cpuinfo - CPU 的信息 (型号, 家族, 缓存大小等)   /proc/meminfo - 物理内存、交换空间等的信息   /proc/mounts - 已加载的文件系统的列表   /proc/devices - 可用设备的列表   /proc/filesystems - 被支持的文件系统   /proc/modules - 已加载的模块   /proc/version - 内核版本   /proc/cmdline - 系统启动时输入的内核命令行参数   proc 中的文件远不止上面列出的这么多。想要进一步了解的读者可以对 /proc 的每一个 文件都'more'一下或读参考文献[1]获取更多的有关 /proc 目录中的文件的信息。我建议 使用'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   上述命令显示有一个正在运行的 mozilla 进程的 PID 是 32558。相对应的,/proc 中应该有一个名叫 32558 的目录   代码如下:   $ ls -l /proc/32558
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-12-16
/proc文件系统是一个基于内存的文件系统,其中包括CPU、内存、分区划分、I/O地址、直接内存访问通道和正在运行的进程。/proc文件系统是由系统自动维护的。更多命令请查看《Linux就该这么学》第二章内容。本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网