当前位置:  技术问答>linux和unix

proc目录下文件的意义,大家帮忙讲讲。

    来源: 互联网  发布时间:2015-05-12

    本文导语:  用cat显示proc下的filesystems和devices、cpuinfo文件内容时,那些提示都是什么意义,那位大虾帮忙讲讲。最好能把其他的也讲讲。 | 使用 /proc 文件系统来控制系统 级别:中级   Graham White(gwhite...

用cat显示proc下的filesystems和devices、cpuinfo文件内容时,那些提示都是什么意义,那位大虾帮忙讲讲。最好能把其他的也讲讲。

|
使用 /proc 文件系统来控制系统
级别:中级
 

Graham White(gwhite at uk.ibm.com)
IT 专家,Hursley,IBM
2003 年 8 月

/proc 文件系统是 Linux 的优秀特性之一,本文向您详细讲述了它的一些最实用的基础知识。使用 /proc,您再也不用关闭并重新引导机器来管理操作系统的许多细节问题,这对那些要求系统的可用性尽可能高的管理员来说非常有用。
任何管理过具有商业重要性的系统的人都知道计算机正常运行时间的价值 — 或者反过来讲,知道用户因故障时间会给您带来诸多头痛问题。公司采用 UNIX 服务器的主要原因之一是由于它的可靠性和稳定性。如果仔细管理,通常可以很长时间不需重启这些服务器。为了做到尽善尽美,您可以实时执行一些管理任务,甚至是内核这一级别的任务,从而保持服务器的可用性。虽然因升级硬件或因某人踢掉电源线而仍需要重启系统,但了解到许多管理任务可以在不干扰服务的情况下执行,总是有益的。

本文提供了不需要重新引导就能够执行关于各种管理任务和更改系统的提示和技巧。Linux 提供了各种方法,用以在保持系统正常运行的情况下,更改底层操作系统的值和设置。这些方法有两种基本形式,一种形式对于所有 Linux 系统都是通用的,并在 Linux 内核中提供这一形式(您可以在 Linux Kernel Archives 上查找更多关于 Linux 内核的信息和下载内核源代码;请参阅参考资料,里面有至 Linux Kernel Archives 的链接),还有一种形式是各分发版所独有的,并且由供应商提供。本文将讨论这两种方法。

更改运行中的内核的参数
Linux 向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核/系统。这是通过 /proc 虚拟文件系统实现的。Linux Gazette 给出了一份有关 /proc 的参考,它是我所看到过的最简单且最容易的参考之一。(请参阅参考资料,其中有至这篇文章的链接。)/proc 文件系统主要可以让您查看运行中的内核,这一点对于监控性能、查找系统信息、了解系统是如何配置的以及更改该配置很有用。该文件系统被称为虚拟文件系统,因为它实际上根本不是一个文件系统。它只是内核提供的一个映射,被附加在通常的文件系统结构之上,从而使您能够访问它。

我们可以采用某种方法在系统正常运行的同时更改运行中的内核的参数,这一事实赋予了系统管理员在更改内核设置方面强大的能力和高的灵活性。这种实现是出自部分 Linux 内核开发人员富有灵感的想法。但能力太大会是一件坏事吗?有时确实如此。如果准备更改 /proc 文件系统中的任何内容,您必须确保自己知道在更改什么以及这会对系统产生什么影响。这些技术确实有用,但错误的举动会带来完全不希望得到的结果。如果您不熟悉这方面的内容,或者不确定您所做的某项更改会带来什么影响,那么请在一台对您或您公司不重要的机器上进行实践。

如何更改
首先,考虑怎样做不会对内核进行更改。有两条充分的理由说明了为什么不能直接切换至 /proc 文件系统,用文本编辑器打开一个文件,做一系列更改,然后保存该文件,再退出。这两条理由是: 

数据完整性:所有这些文件描述了运行中的系统,由于内核可以随时更改这些文件中的任何一个,因此如果打开一个编辑器,然后更改某些数据,而同时,系统也正在底层更改这些数据,那么无论您保存下来的任何内容都不可能是内核所期望的内容。 
虚拟文件:所有这些文件实际上都不存在。如何使保存的数据同步,等等?

所以,解决办法是,不使用编辑器来更改任何这些文件。每当更改 /proc 文件系统中的任何内容时,应该使用 echo 命令,然后从命令行将输出重定向至 /proc 下所选定的文件中。例如:

echo "Your-New-Kernel-Value" > /proc/your/file

类似的,如果希望查看 /proc 中的信息,应该使用专门用于此用途的命令,或者使用命令行下的 cat 命令。

更改什么
要很好地使用 /proc 不需要您是一位内核方面的高手,只需基本了解这个文件系统的结构就可以极大地帮助您。直到有一天用户向您询问某些特定的功能,使您很高兴曾下功夫了解过在哪里进行更改,您才可能会觉得有必要知道关于 /proc 中的任何事情。在这方面,/proc 文件系统通过其结构和文件许可权帮助系统管理员。

/proc 中的每个文件都有一组分配给它的非常特殊的文件许可权,并且每个文件属于特定的用户标识。这一点实现得非常仔细,从而提供给管理员和用户正确的功能。下面这个列表汇总了各个文件上有哪些特定的许可权: 

只读:任何用户都不能更改该文件;它用于表示系统信息 
root 写:如果 /proc 中的某个文件是可写的,则通常只能由 root 用户来写 
root 读:有些文件对一般系统用户是不可见的,而只对 root 用户是可见的 
其它:出于各种原因,您可能会看到不同于上面常见的三种许可权的组合

关于 /proc,您会发现最通常的情况是,它的大多数文件是只读的,除了 /proc/sys 目录。该目录下存放着大多数的内核参数(而不是信息),并且设计成可以在系统运行的同时进行更改。因此这个目录是本文的主旨所在。

就更改 /proc 中什么内容而言,要了解的最后一点是,应该向这些文件实际写些什么。当查看 /proc 中各种文件时,会发现其中一些文件对我们来说是可读的,一些文件是数据文件。通过用特定的实用程序(譬如 top、lspci 和 free),这些数据文件仍然也可读。您还会注意到,对我们来说可读文件有两种不同格式:一些是二进制开关,另一些包含其它信息。二进制开关文件只包含代表特定内核功能的 0(关)或 1(开)。

进行更改
详细介绍有关 /proc 中每个文件的用法和确切信息超出了本文所涉及的范围。要获得任何关于本文没有涉及到的 /proc 文件的其它信息,一个最佳来源就是 Linux 内核源代码本身,它包含了一些非常优秀的文档。对于系统管理员,/proc 中的以下文件较有用。这不意味着它是一份详尽的说明,而只是日常使用中便于查阅的参考。

/proc/scsi
/proc/scsi/scsi
作为系统管理员,需要了解的最有用内容是,在有热交换驱动器情况下,如何不重启系统就可以添加更多磁盘空间。假使不使用 /proc,您可以插入驱动器,但为了使系统识别新磁盘,必须随即重新引导系统。这里,可以用以下命令来使系统识别新的驱动器:

echo "scsi add-single-device w x y z" > /proc/scsi/scsi

为使该命令正常运行,必须指定正确的参数值 w、x、y 和 z,如下所示: 

w 是主机适配器标识,第一个适配器为零(0) 
x 是主机适配器上的 SCSI 通道,第一个通道为零(0) 
y 是设备的 SCSI 标识 
z 是 LUN 号,第一个 LUN 为零(0)

一旦将磁盘添加到系统中之后,可以挂装任何先前已格式化的文件系统,也可以开始对它进行格式化等。例如,如果不确定磁盘是什么设备,或者想检查任何先前已有的分区,则可以用如 fdisk -l 这样的命令来向您报告这方面的信息。

相反的,在不重新引导系统的情况下将设备从系统中除去的命令是:

echo "scsi remove-single-device w x y z" > /proc/scsi/scsi

在输入这条命令并将热交换 SCSI 磁盘从系统中除去之前,请确保首先卸下已从该磁盘安装的任何文件系统。

/proc/sys/fs/
/proc/sys/fs/file-max
该文件指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。

缺省设置:4096

/proc/sys/fs/file-nr
该文件与 file-max 相关,它有三个值: 

已分配文件句柄的数目 
已使用文件句柄的数目 
文件句柄的最大数目
该文件是只读的,仅用于显示信息。 

/proc/sys/fs/inode-*
任何以名称“inode”开头的文件所执行的操作与上面那些以名称“file”开头的文件所执行的操作一样,但所执行的操作与索引节点有关,而与文件句柄无关。

/proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid
这两个文件分别保存那些支持 16 位用户标识和组标识的任何文件系统的用户标识(UID)和组标识(GID)。可以更改这些值,但如果您确实觉得需要这样做,那么您可能会发现更改组和密码文件项更容易些。

缺省设置:65534


|
使用 /proc 文件系统来控制系统
级别:中级
 

Graham White(gwhite at uk.ibm.com)
IT 专家,Hursley,IBM
2003 年 8 月

/proc 文件系统是 Linux 的优秀特性之一,本文向您详细讲述了它的一些最实用的基础知识。使用 /proc,您再也不用关闭并重新引导机器来管理操作系统的许多细节问题,这对那些要求系统的可用性尽可能高的管理员来说非常有用。
任何管理过具有商业重要性的系统的人都知道计算机正常运行时间的价值 — 或者反过来讲,知道用户因故障时间会给您带来诸多头痛问题。公司采用 UNIX 服务器的主要原因之一是由于它的可靠性和稳定性。如果仔细管理,通常可以很长时间不需重启这些服务器。为了做到尽善尽美,您可以实时执行一些管理任务,甚至是内核这一级别的任务,从而保持服务器的可用性。虽然因升级硬件或因某人踢掉电源线而仍需要重启系统,但了解到许多管理任务可以在不干扰服务的情况下执行,总是有益的。

本文提供了不需要重新引导就能够执行关于各种管理任务和更改系统的提示和技巧。Linux 提供了各种方法,用以在保持系统正常运行的情况下,更改底层操作系统的值和设置。这些方法有两种基本形式,一种形式对于所有 Linux 系统都是通用的,并在 Linux 内核中提供这一形式(您可以在 Linux Kernel Archives 上查找更多关于 Linux 内核的信息和下载内核源代码;请参阅参考资料,里面有至 Linux Kernel Archives 的链接),还有一种形式是各分发版所独有的,并且由供应商提供。本文将讨论这两种方法。

更改运行中的内核的参数
Linux 向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核/系统。这是通过 /proc 虚拟文件系统实现的。Linux Gazette 给出了一份有关 /proc 的参考,它是我所看到过的最简单且最容易的参考之一。(请参阅参考资料,其中有至这篇文章的链接。)/proc 文件系统主要可以让您查看运行中的内核,这一点对于监控性能、查找系统信息、了解系统是如何配置的以及更改该配置很有用。该文件系统被称为虚拟文件系统,因为它实际上根本不是一个文件系统。它只是内核提供的一个映射,被附加在通常的文件系统结构之上,从而使您能够访问它。

我们可以采用某种方法在系统正常运行的同时更改运行中的内核的参数,这一事实赋予了系统管理员在更改内核设置方面强大的能力和高的灵活性。这种实现是出自部分 Linux 内核开发人员富有灵感的想法。但能力太大会是一件坏事吗?有时确实如此。如果准备更改 /proc 文件系统中的任何内容,您必须确保自己知道在更改什么以及这会对系统产生什么影响。这些技术确实有用,但错误的举动会带来完全不希望得到的结果。如果您不熟悉这方面的内容,或者不确定您所做的某项更改会带来什么影响,那么请在一台对您或您公司不重要的机器上进行实践。

如何更改
首先,考虑怎样做不会对内核进行更改。有两条充分的理由说明了为什么不能直接切换至 /proc 文件系统,用文本编辑器打开一个文件,做一系列更改,然后保存该文件,再退出。这两条理由是: 

数据完整性:所有这些文件描述了运行中的系统,由于内核可以随时更改这些文件中的任何一个,因此如果打开一个编辑器,然后更改某些数据,而同时,系统也正在底层更改这些数据,那么无论您保存下来的任何内容都不可能是内核所期望的内容。 
虚拟文件:所有这些文件实际上都不存在。如何使保存的数据同步,等等?

所以,解决办法是,不使用编辑器来更改任何这些文件。每当更改 /proc 文件系统中的任何内容时,应该使用 echo 命令,然后从命令行将输出重定向至 /proc 下所选定的文件中。例如:

echo "Your-New-Kernel-Value" > /proc/your/file

类似的,如果希望查看 /proc 中的信息,应该使用专门用于此用途的命令,或者使用命令行下的 cat 命令。

更改什么
要很好地使用 /proc 不需要您是一位内核方面的高手,只需基本了解这个文件系统的结构就可以极大地帮助您。直到有一天用户向您询问某些特定的功能,使您很高兴曾下功夫了解过在哪里进行更改,您才可能会觉得有必要知道关于 /proc 中的任何事情。在这方面,/proc 文件系统通过其结构和文件许可权帮助系统管理员。

/proc 中的每个文件都有一组分配给它的非常特殊的文件许可权,并且每个文件属于特定的用户标识。这一点实现得非常仔细,从而提供给管理员和用户正确的功能。下面这个列表汇总了各个文件上有哪些特定的许可权: 

只读:任何用户都不能更改该文件;它用于表示系统信息 
root 写:如果 /proc 中的某个文件是可写的,则通常只能由 root 用户来写 
root 读:有些文件对一般系统用户是不可见的,而只对 root 用户是可见的 
其它:出于各种原因,您可能会看到不同于上面常见的三种许可权的组合

关于 /proc,您会发现最通常的情况是,它的大多数文件是只读的,除了 /proc/sys 目录。该目录下存放着大多数的内核参数(而不是信息),并且设计成可以在系统运行的同时进行更改。因此这个目录是本文的主旨所在。

就更改 /proc 中什么内容而言,要了解的最后一点是,应该向这些文件实际写些什么。当查看 /proc 中各种文件时,会发现其中一些文件对我们来说是可读的,一些文件是数据文件。通过用特定的实用程序(譬如 top、lspci 和 free),这些数据文件仍然也可读。您还会注意到,对我们来说可读文件有两种不同格式:一些是二进制开关,另一些包含其它信息。二进制开关文件只包含代表特定内核功能的 0(关)或 1(开)。

进行更改
详细介绍有关 /proc 中每个文件的用法和确切信息超出了本文所涉及的范围。要获得任何关于本文没有涉及到的 /proc 文件的其它信息,一个最佳来源就是 Linux 内核源代码本身,它包含了一些非常优秀的文档。对于系统管理员,/proc 中的以下文件较有用。这不意味着它是一份详尽的说明,而只是日常使用中便于查阅的参考。

/proc/scsi
/proc/scsi/scsi
作为系统管理员,需要了解的最有用内容是,在有热交换驱动器情况下,如何不重启系统就可以添加更多磁盘空间。假使不使用 /proc,您可以插入驱动器,但为了使系统识别新磁盘,必须随即重新引导系统。这里,可以用以下命令来使系统识别新的驱动器:

echo "scsi add-single-device w x y z" > /proc/scsi/scsi

为使该命令正常运行,必须指定正确的参数值 w、x、y 和 z,如下所示: 

w 是主机适配器标识,第一个适配器为零(0) 
x 是主机适配器上的 SCSI 通道,第一个通道为零(0) 
y 是设备的 SCSI 标识 
z 是 LUN 号,第一个 LUN 为零(0)

一旦将磁盘添加到系统中之后,可以挂装任何先前已格式化的文件系统,也可以开始对它进行格式化等。例如,如果不确定磁盘是什么设备,或者想检查任何先前已有的分区,则可以用如 fdisk -l 这样的命令来向您报告这方面的信息。

相反的,在不重新引导系统的情况下将设备从系统中除去的命令是:

echo "scsi remove-single-device w x y z" > /proc/scsi/scsi

在输入这条命令并将热交换 SCSI 磁盘从系统中除去之前,请确保首先卸下已从该磁盘安装的任何文件系统。

/proc/sys/fs/
/proc/sys/fs/file-max
该文件指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。

缺省设置:4096

/proc/sys/fs/file-nr
该文件与 file-max 相关,它有三个值: 

已分配文件句柄的数目 
已使用文件句柄的数目 
文件句柄的最大数目
该文件是只读的,仅用于显示信息。 

/proc/sys/fs/inode-*
任何以名称“inode”开头的文件所执行的操作与上面那些以名称“file”开头的文件所执行的操作一样,但所执行的操作与索引节点有关,而与文件句柄无关。

/proc/sys/fs/overflowuid 和 /proc/sys/fs/overflowgid
这两个文件分别保存那些支持 16 位用户标识和组标识的任何文件系统的用户标识(UID)和组标识(GID)。可以更改这些值,但如果您确实觉得需要这样做,那么您可能会发现更改组和密码文件项更容易些。

缺省设置:65534


|
/proc文件系统简介 
出自:http://www.xici.net 大鹰 2002年01月17日 14:15 
  proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。它的目录结构如下: 
目录名称 目录内容 
apm     高级电源管理信息 
cmdline 内核命令行 
Cpuinfo    关于Cpu信息 
Devices   可以用到的设备(块设备/字符设备) 
Dma    Used DMS channels 
Filesystems 支持的文件系统 
Interrupts 中断的使用 
Ioports    I/O端口的使用 
Kcore    内核核心印象 
Kmsg     内核消息 
Ksyms    内核符号表 
Loadavg     负载均衡 
Locks     内核锁 
Meminfo     内存信息 
Misc    Miscellaneous 
Modules    加载模块列表 
Mounts    加载的文件系统 
Partitions 系统识别的分区表 
Rtc    Real time clock 
Slabinfo Slab pool info 
Stat    全面统计状态表s 
Swaps    对换空间的利用情况 
Version     内核版本 
Uptime    系统正常运行时间 
 并不是所有这些目录在你的系统中都有,这取决于你的内核配置和装载的模块。另外,在/proc下还有三个很重要的目录:net,scsi和sys。Sys目录是可写的,可以通过它来访问或修改内核的参数(见下一部分),而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi目录不存在。 
除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。Proc文件系统的名字就是由之而起。进程目录的结构如下: 
目录名称 目录内容 
Cmdline    命令行参数 
Environ    环境变量值 
Fd  一个包含所有文件描述符的目录 
Mem    进程的内存被利用情况 
Stat    进程状态 
Status   Process status in human readable form 
Cwd   当前工作目录的链接 
Exe   Link to the executable of this process 
Maps    内存印象 
Statm    进程内存状态信息 
Root    链接此进程的root目录 
用户如果要查看系统信息,可以用cat命令。例如: 
> cat /proc/interrupts 
      CPU0    
 0:  8728810     XT-PIC timer 
 1:    895     XT-PIC keyboard 
 2:     0     XT-PIC cascade 
 3:   531695     XT-PIC aha152x 
 4:  2014133     XT-PIC serial 
 5:   44401     XT-PIC pcnet_cs 
 8:     2     XT-PIC rtc 
11:     8     XT-PIC i82365 
12:   182918     XT-PIC Mouse 
13:     1     XT-PIC fpu PS/2 
14:  1232265     XT-PIC ide0 
15:     7     XT-PIC ide1 
NMI:     0 
2、 修改内核参数 
在/proc文件系统中有一个有趣的目录:/proc/sys。它不仅提供了内核信息,而且可以通过它修改内核参数,来优化你的系统。但是你必须很小心,因为可能会造成系统崩溃。最好是先找一台无关紧要的机子,调试成功后再应用到你的系统上。 
要改变内核的参数,只要用vi编辑或echo参数重定向到文件中即可。下面有一个例子: 
# cat /proc/sys/fs/file-max 
4096 
# echo 8192 > /proc/sys/fs/file-max 
# cat /proc/sys/fs/file-max 
8192 
如果你优化了参数,则可以把它们写成脚本文件,使它在系统启动时自动完成修改。 

|
man proc不是很清楚吗?

|
/proc下面的文件是kernel的参数或者kernel的状态

|
proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 关于PROC问题(急!!!!!,帮帮忙)
  • 小弟对PROC不太了解,但老板要求用它开发,帮帮忙(介绍介绍相关的资源或网站)
  • 帮忙介绍下/proc/pid/stat
  • 那个网有讨论proc或proc的资料的?
  • 为什么我的/PROC目录下没有任何东西呢
  • 请问 proc_register 能否用在普通程序里?
  • 修改proc文件系统中同时打开文件个数错误
  • proc中钩子函数被多次调用的问题
  • 怎样修改/proc下文件内容?
  • 那位大侠解释一下/proc/net/dev这个文件各个字段的含义!
  • bash script /proc/partitions取字串問題
  • 请教 文件系统/proc移植
  • 关于/proc
  • 关于/proc目录下一些文件的问题
  • 如何修改/proc/version的内容
  • /proc/kallsym 文件详解
  • Linux下如何使用oci和proc
  • /dev目录的文件和/proc/device文件的关系
  • 关于/proc/devices问题
  • 关于学习proc文件系统
  • proc entry和线程通知
  • 请教一个关于PROC中调用存储过程的问题
  • 如何读取主版的bios信息并显示出来? linux下面的/proc文件系统可以帮助完成这个功能么?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3