作者: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 中的以下文档较有用。这不意味着他是一份详尽的说明,而只是日常使用中便于查阅的参考。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




