下载
第2 1学时系统监管基础
本学时教程介绍一些进行系统管理的基本知识。将学习怎样使用s u命令、怎样获取关于
系统的信息、怎样对其他用户进行管理以及怎样通过文件工具程序使得O p e n L i n u x操作系统运
行在最佳状态。虽然本学时教程中讨论的内容大都是些通俗易懂的基本原则,还将学习到一
些关于如何使L i n u x操作系统发挥出最佳性能的有价值的技巧。将需要把这些知识运用到随后
的三个学时教程的学习当中,在那里我们将讨论处理文件、文件归档和任务安排( s c h e d u l i n g)
等问题。
即使你是使用你的计算机的唯一用户,也需要学习一些基本的系统管理技巧,原因至少
有以下几点:
• 为了备份或者恢复系统,或者至少对重要文件这么做
• 为了清理硬盘空间
• 为了安装新的软件或者升级L i n u x系统
• 为了向别人—比如同事、朋友、配偶、或者孩子等—介绍O p e n L i n u x操作系统
• 为了查找并纠正错误
虽然在本学时教程中介绍的一些内容要求拥有根操作员的权限(需要以根操作员的身份执
行某个命令),但是不应该总是以根操作员的身份登录进入O p e n L i n u x操作系统并使用它。这
里给你一个充分的理由:一直以根操作员的身份运行系统可能是非常危险的,因为对系统上
的所有文件都能够进行存取,可以随心所欲地对任何文件进行删除、移动或者拷贝操作。你
可能会使用下面的命令把O p e n L i n u x操作系统(还记不记得第5学时教程“操作与搜索命令”中
关于r m命令的警告)和其他任何已经挂装的文件系统全部删除掉:
# rm -fr / *
如果你是从自己的帐户运行L i n u x操作系统的话,这个问题就不会发生,因为r m命令会报
告“Permission denied”(权限不够)并退出执行。但是在你是以自己的账户登录进入系统的却
又必须以根操作员的身份对系统进行些操作的情况下又应该怎么办呢?这个时候就需要s u命
令登场了。
21.1 使用su命令以根操作员的身份执行操作
s u命令(也就是改变用户身份的命令)允许你以你的系统上任何用户的身份运行一个命令。
存放在子目录/ b i n中的s u命令有七个不同的命令行参数。其中的几个最常用的将在下面介绍。
虽然最有可能会使用s u命令改变自己的身份为根操作员,但是当你希望改变自己的身分成为
其他的用户来调试诸如电子邮件或者打印等问题的时候,这个程序也一样的简便实用。使用
s u命令的方法很简单;比如说,如果想改变为根操作员的身份,可以象下面这样使用s u命令:
# su -
Password :
su : incorrect password
在缺省的情况下,如果调用s u命令的时候没有指定用户名,这个命令就会允许你改变为
根操作员身份。(使用连字符号( -)命令行参数确保你在作为根操作员的时候能够使用根操作员
的环境变量。)要求输入一个口令字,如果输入了一个错误的口令字, s u命令会报警并退出执
行。如果输入了正确的口令字,将会作为根操作员登录进入系统。如果想返回到原来的s h e l l,
请使用s h e l l的e x i t命令,如下所示:
在上面的例子中我们使用了w h o a m i命令显示出执行了e x i t命令之后,就回到了普通用户
状态。s u命令的另外一个方便的功能是通过- s命令行参数运行另外一个s h e l l。如果想试试另一
个s h e l l,但是又不想使用c h s h命令永久地改变s h e l l的话,就可以使用下面的命令:
从上面的例子(通过把p r i n t e n v命令的执行结果经过管道送到f g r e p命令后的方法显示)可以
看出:虽然缺省的s h e l l是b a s h,s u命令允许你临时性地使用p d k s h,也就是公共域Korn shell。
除非指定自己的用户名,你将会以根操作员身份来使用这个新的s h e l l。一个比较好的办法是:
# su -s /bin/ksh yourusername
最后,当使用了s u命令的- c命令行参数的时候,还可以使用它去执行某个单独的命令。这
样当你想执行那些只能允许根操作员执行的任务(比如挂装一个闪存内存卡)的时候,就会很方
便,如下所示:
# su -c " mount -t vfat /dev/hde1 /mnt/flash "
Password :
上面的命令行挂装了/ d e v / h d e 1设备(一个S u n D i s k公司出品的带有一个V FAT(长文件名)文
件系统的闪存卡)到挂装点/ m n t / f l a s h子目录上。如果需要临时挂装或者卸载软盘、C D - R O M光
盘、Z i p磁盘或者其他的设备,将会发现这是一个很简便的方法。第2 2学时教程“管理文件和
文件系统”中介绍了挂装或者卸载其他文件系统的方法。
如果正在以控制台方式(没有运行X 11)使用着L i n u x操作系统,可以使用控制台转换键( A l t
+ F1等等)以根操作员的身份运行一个虚拟控制台来执行根操作员的任务。这是个便利但是又
很蹩脚的方法,因为你可能会被诱惑一直赖在根操作员操作方式上。而使用s u命令至少可以
提醒你自己为什么正在以根操作员的身份运行程序,千万小心!
下一小节介绍一些可以用来查明系统正在怎样运转的工具程序。
21.2 获取磁盘空间信息
安装L i n u x操作系统的时候,你把它安装到了某个分区上面,而这个分区是由某个特定的
设备名(如/ d e v / h d a 1、/ d e v / s d b 1等)来表示的。我希望把分区设置得足够大到可以满足目前和
第21学时系统监管基础用用329 下载
将来的需要。但是怎样才能检查并知道磁盘上还剩下多大的空间,或者换句话说,你又有多
大的硬盘空间呢?虽然L i n u x操作系统可以支持的硬盘最大容量达到了四兆兆字节,单个文件
的最大长度达到了二千兆字节,但是我们中的大多数人不要说买不起、就是用也是用不到这
么大的存储能力的。虽然硬盘驱动器的价格一直在下降,但是安装许许多多的软件或者需要
有一个大的工作空间的时候,这一点仍会是一个关键的问题。
21.2.1 使用df命令获取文件系统的统计数据
d f(可用硬盘空间)命令(可以在子目录/ b i n中找到它)会收集和整理当前已经挂装的全部各
种文件系统的一些重要的统计数据。d f命令使用起来很简单,如下所示:
上面的输出显示L i n u x操作系统下在三个不同的设备上安装了四个不同的文件系统。第一
个是安装在/ d e v / h d a 3设备上/目录处的根分区;第二个是安装在/ d e v / h d a 1设备上/ m n t / d o s子目
录处的D O S分区;第三个是安装在/ d e v / h d c 1设备上/ m n t / f l a s h子目录处的一个闪存卡;第四个
是安装在/ d e v / h d b设备上/ m n t / c d r o m处的一张C D - R O M光盘。d f命令还列出了每一个存储设备
的容量、已经使用了多少、还剩下多少以及这些设备当前的未使用空间所占的百分比。请注
意在C D - R O M光盘上已经没有剩余空间了。这是因为它被安装为只读属性的,也就是说你不
能在这个设备上存储和删除文件。下面例子中的命令将让你了解这是为什么。
用来查看关于你的已挂装文件系统的信息的一个简便的方法是使用m o u n t命令。这个命令
通常是在开机启动的过程中由根操作员用来挂装或者卸载各种文件系统的,但是任何用户都
可以使用m o u n t命令来弄清楚现在可以使用的是哪些类型的文件系统以及这些文件系统是如何
挂装的,如下所示:
上面显示根分区(在/目录处)是一个L i n u x操作系统下的e x t 2文件系统,挂装为可读写;而
子目录/ m n t / d o s和/ m n t / f l a s h则分别包含了D O S分区,也可以读写。(那个/ p r o c文件系统是
L i n u x操作系统用来报告进程运行情况—比如正在运行的应用程序、系统状态、等等—所
使用的一个特殊的子目录。)最后, m o u n t命令报告C D - R O M光盘是作为一个只读的i s o 9 6 6 0文
件系统挂装的。
可以把从m o u n t命令中获得的这些信息通过d f命令的- t,也就是文件系统参数使用d f命令
来获得更有针对性的信息:如下所示:
上面的命令告诉d f命令只显示全部关于已经挂装的e x t 2文件系统的信息。可以从m o u n t命
330使用第五部分监管你的系统
下载
令的使用手册页中查到能够在d f命令中使用- t参数说明的有效的文件系统的清单。我们将在第
2 2学时教程“管理文件和文件系统”中对m o u n t命令做更进一步的介绍。可以看出通过使用d f
和m o u n t命令,你可以获取关于设备的类型、这些设备是怎样安装的以及在每个设备还有多少
剩余空间的报告。
21.2.2 使用du命令掌握文件系统的磁盘使用情况
d u(磁盘使用情况)命令(你可以在子目录/ u s r / b i n中找到它)能够方便地汇总出磁盘的使用情
况,它可以报告出每个子目录或者某个指定路径的空间占用量。虽然d u命令有超过2 0个命令
行参数,但是本小节只介绍其中一些常用的,其他的留给你自己去练习总结。可以单独地使
用d u命令,也可以指定一个子目录或者路径,如下所示:
上面的报告(为简洁起见,我们没有列出所有的子目录)列出了一个用户子目录的使用情况,
它占用了总共2 7 1 9 9个1 K字节大小的存储块。如果觉得这些数字不容易理解的话,也可以让
d u命令以字节为单位进行汇总,如下所示:
如果上面的信息对你来说太杂乱,那么你可以使用- s u m m a r i z e参数得到一个以千字节(使
用- -kilobytes或者- k参数)或者以字节(使用- b或者- -bytes参数)为单位的已占用空间总量,如下
所示:
# du -b --summarize
2 6 7 8 6 9 0 3
d u命令还可以帮助你跟踪记录那些在不被注意的情况下膨胀失控或者占用太多磁盘空间
的子目录。如果指定了一个路径, d u命令将报告这个路径下所有子目录分别占用的磁盘空间,
这样可能对你找出那些包含了过多信息的子目录有所帮助,如下所示:
第21学时系统监管基础用用331 下载
在这里,我把d u命令和s o r t命令使用在了一起,并指定d u命令汇总每个子目录所占用的字
节数,设置s o r t命令按从大到小的顺序对数值进行排序。这么一个使用了管道(请阅读第6学时
“使用s h e l l”中的介绍)的命令行将会自动地把占用空间最多的子目录排列到输出清单的最上
端。可以看到/ v a r / l o g子目录已经膨胀得相当大了。那个/ v a r / l i b子目录应该是比较大一些的,
因为它包含着r p m数据库(我们将在第2 2学时教程中介绍r p m命令)。
虽然d u命令不象d f命令那样有一个- t参数来指定需要对哪一个文件系统进行汇总和报告,
但是可以使用它的- x参数来排除其他的文件系统。这样就可以很方便地排除了其他的操作系
统如D O S或者Wi n d o w s。如果在d u命令的命令行上指定让它出具某个挂装点的使用情况报告
的话,也可以得到一份关于其他文件系统的报告。举例来说,下面例子中的d u命令会很痛快
地报告Wi n d o w s子目录占用了多少空间:
从这个(省略了的)报告可以看出, 除了Wi n d o w s操作系统,占用空间最大的是某些
Wi n d o w s下的应用软件。为了获得更多的磁盘空间而需要决定不安装那些应用软件的时候,
这些信息将十分有帮助。
21.2.3 使用symlinks命令检查符号链接
s y m l i n k s命令检查指定子目录中的符号链接。这个s y m l i n k s命令有几个命令行参数大概会
有一些用处,比如可以使用- r参数,也就是递归参数来查看整个子目录的结构。举例来说,如
果想查看全部的文件系统,请使用- r参数,如下所示:
332使用第五部分监管你的系统
下载
正如所看到的,这个s y m l i n k s命令的执行结果对悬挂和绝对符号链接(一共有六种不正常
的符号链接:绝对、悬挂、臃余、繁复、其他文件系统以及相对)至少显示出两种症状。悬挂
链接就是指向并不存在的文件的链接,应该引起注意,因为O p e n L i n u x操作系统无法确定它所
指向的文件是否存在。
请阅读s y m l i n k s命令的使用手册页了解对绝对、悬挂、臃余、繁复、
相对以及其他文件系统这些不正常的链接症状的定义。
作为一个入门级别的系统管理员,可以使用s y m l i n k s命令递归地检查文件子目录,然后再
打印出关于你的文件系统状态的各种报告。下面给出一个很方便的命令行,可以使用它来检
查L i n u x文件系统(不包括其他类型的文件系统,比如Wi n d o w s)中所有的符号链接:
# symlinks -vr / |
| fgrep " dangling " > symlinkstatusreport.txt
上面的命令行使用s y m l i n k s命令递归地向下进入整个的O p e n L i n u x文件系统并检查报告出
悬挂链接。当s y m l i n k s命令找到一个悬挂链接的时候,就由f g r e p命令列印出所有的匹配情况
并生成报告。随着系统管理水平的提高,将能够设计你自己的锦囊妙计来诊断系统。
21.2.4 节省磁盘空间
本小节将介绍一些节省磁盘空间的技巧。做为一个系统管理员,你的工作之一就是维护
文件系统的良好状态,定期执行一些整理操作来释放磁盘空间。一旦找到一些既能够适应你
的系统又能够适应你在系统上的工作方式的技术与方法,就会发现你能够定期对硬盘加以整
理并恢复数以兆字节计的磁盘空间。
节省磁盘空间的一个好办法是不要安装太多的软件。比如说,到底你会用到多少种字处
理器程序?你会用到多少种图形程序?如果找到了一个有足够能力的程序,最好就把其他那
些完成同样工作的软件删除掉。请务必要阅读学习第2 2学时教程,你将会看到r p m命令是如何
通过删除程序包和其支持软件帮助你释放磁盘空间并对L i n u x操作系统安装过程进行个性化设
置。
通过查找那些不经常使用的程序和已经不再需要的各种图形或者文本文件,你可以定期
调整子目录所占用的空间的大小。你已经学习了一种能够用来查找那些可以作为被整理的子
目录的方法。但是你更应该考虑明显地应该删除的一些其他的文件类型。
比如说,有些L i n u x程序使用波浪号( ~)作为前缀了建立备份文件。可以使用下面的命令来
找出它们:
# find / -name ~* - xdev
一旦你对查找到的结果感到满意,就可以通过管道把这些文件名送到r m命令去。这需要
使用x a rg s命令建立一个进行磁盘空间整理的命令行(当然,也可以使用f i n d命令的- e x e c命令行
第21学时系统监管基础用用333 下载
334使用第五部分监管你的系统
下载
参数):
# find / -name ~* -xdev |
| xargs rm -f
还应该查找文件名为c o r e的文件。这些是一些程序在非正常终止的时候生成的程序内存映
像文件,基本上都是一些“垃圾”文件。有些这样的文件其长度相当巨大。可以使用b a s h或
者pdksh shell的u l i m i t命令来限制这些c o r e文件的规模。如果想查看当前c o r e文件能够被接受的
文件长度的话,可以使用u l i m i t命令的- c参数,如下所示:
# ulimit -c
1 0 0 0 0 0 0
幸运的是,缺省的bash shell的u l i m i t命令把O p e n L i n u x操作系统下的
c o r e转储文件的长度限制为0。如果你是一个L i n u x操作系统下的程序员并
且需要c o r e文件的话(用于纠错),请修改这个设置值。
这可不是说c o r e转储文件被限制在1 M B以内,而是一百万个5 1 2字节大小的存储块! 你可
以使用- c参数来限制这些c o r e文件的规模,如下所示:
# ulimit -c 1000
这样就把c o r e文件的最大长度设置为5 1 2 , 0 0 0个字节。如果正在使用的是csh shell,请使
用:
# limit coredumpsize 1000
限制这些文件的规模是今后节省你的磁盘空间的方法之一。另外一些可以作为删除候选
的文件类型有:
* . b a k、* . B A K—备份文件
* . o—程序编译过程中的编译目标文件
# *—备份文件
* . 1、* . 2、* . 3—/ v a r / l o g子目录中系统登录文件的文件后缀。有些登录文件可能会膨胀得相
当大,除非真的需要它们,否则最好是删掉它们。
在整个系统中删除以文件号为后缀的文件(比如. 1等等)的时候要小
心:如果你从根目录(也就是/目录)开始自动进行搜索并删除任务操作,
就可能会删掉许多库文件和说明文本。
如果觉得使用f i n d命令在整个文件系统中查找并删除文件不那么令人放心的话,可以使用
下面的命令先生成一个删除候选文件清单:
# find / \ ( -name core -o -name *.o\) -xdev > deletelist.txt
请注意还可以设置这个命令在不需要你参与的情况下定期自动运行,然后把运行结果报
告做为一个备忘录提示通过电子邮件发送给你。详细情况请阅读第2 4学时教程“使用任务计
划实现系统管理自动化”。
如果经常实践你自己的命令组合,很快就能够设计出有自己风格的个性化报告和进行清
理的操作方法。你现在已经知道如何获得关于磁盘空间的信息。你还将在“管理用户权限”
那一小节学习到如何管理磁盘空间和如何分配配额(对硬盘的使用量进行软件方法的限制)。但
是现在,我们先来学习当L i n u x操作系统正在运行的时候,怎样去了解你的计算机内存中正在
发生些什么事情。
第21学时系统监管基础用用335 下载
压缩那些用不着的文件或者子目录或者档案再把那些子目录删除掉
也是另外一个扩大磁盘空间的好方法。请阅读第5学时教程“操作与搜索
命令”了解关于使用压缩根据程序的资料。另外,请阅读第2 3学时教程
“备份与恢复系统”了解备份和恢复O p e n L i n u x操作系统中的文件和子目
录的详细资料。
21.3 获取内存信息
新术语虽然产业界的潮流是不断地以更低的价格提供更大的硬盘空间和更多的系统内存,
也就是R A M,还是有许多人不愿意花更多的钱来扩充系统。好的消息是L i n u x操作系统在使
用内存这个方面非常有效率,因为甚至是一个1 6 M B的系统就可以提供足够的空间(还需要有
一个同样大小的交换区)来顺利地运行X 1 1和大多数程序。而坏的消息则是程序的规模一直在
不断地变得越来越大,特别是所谓的“程序功能扩充”,也就是说有越来越多的功能被扩充到
程序中来。(对L i n u x操作系统本身来说就是如此,在过去的几年里,它的体积膨胀了三倍。)
本小节将介绍一些能够帮助你了解系统内存的程序,并教给你一些整理内存的技巧。
21.3.1 使用free命令生成内存使用情况的报告
f r e e命令给出内存的分配方案以及尚未使用和已经使用的内存总量,还包括交换文件的使
用情况。这个命令保存在子目录/ u s r / b i n中,它有好几个命令行参数,但是很容易使用和掌握,
如下所示:
上面给出了一个6 4 M B的R A M和1 3 1 M B的交换空间的系统情况。请注意几乎所有系统内
存都正在使用着(一般),而将近3 M B(非常好!)的交换空间也已经使用了。
在缺省的状态下,f r e e命令以千字节—也就是1 0 2 4字节为单位—来显示内存使用情况。
可以使用- b参数以字节为单位显示内存使用情况,或者可以使用- m参数以兆字节为单位显示
内存使用情况。还可以通过- s参数使用f r e e命令来不间断地监视到底有多少内存已经使用了。
这样,以. 0 1秒的更新速度在一个X 11的终端窗口中运行f r e e命令的时候,它可是一个很方便的
实时监控器。举例来说,如果想在一个X 11终端窗口中监控硬盘空间的使用情况的时候,可以
象下面这样使用free 命令:
# /usr/bin/free -b -s1
这个命令将会在终端窗口中连续不断地报告内存的使用情况,每秒钟更新一次。
21.3.2 使用vmstat命令生成虚拟内存使用情况的报告
v m s t a t命令(可以在子目录/ u s r / b i n中找到它)是一个通用监控程序,它不仅可以实时地显示
内存使用的状况和虚拟内存的统计信息,还可以显示磁盘操作的状况、系统使用的状况以及
中央处理器(cpu )的使用状况。如果使用v m s t a t命令的时候没有使用它的任何命令行参数,你
将得到一个一次性的报告,如下所示:
v m s t a t命令报告的主要的活动类型有进程( p r o c s)、内存(以千字节为单位)、交换区(以千字
节为单位)、来自块设备(硬盘驱动器)的输入输出量、系统中断(每秒钟发生的次数)以及中央
处理单元( C P U)分配给用户、系统、和空闲时间所分别占用的百分比。
如果你在v m s t a t命令的命令行上以秒为单位指定了一个时间间隔,你将会得到一个不断变
化更新的报告单。当正需要查找为什么你的计算机的运行速度突然下降了或者为什么出现了
大量的磁盘读写操作这类情况的时候,有这么一个连续报告你的计算机运行情况的显示窗口
可以帮你大忙。
21.3.3 查看shell的“ulimit”设置
在本学时教程前面的内容中已经学习了怎样才能限制c o r e转储文件的长度。现在我们介绍
一些可以在s h e l l中进行的其他方面的设置。如果正在使用的是b a s h或者是p d k s h(k s h)类型的
s h e l l,你就可以使用u l i m i t命令的- a参数显示你当前设置的一个清单,如下所示:
如果正在使用的是t c s h或者是c s h类型的s h e l l,你就可以使用l i m i t命令列出你当前设置的
一个清单,如下所示:
新术语这些限制与根操作员使用的限制是不同的。上面的例子中显示出来的限制是所谓的
“软限制”(可以被任何用户修改的限制值)。如果想要查看s h e l l的硬限制(只能被根操作员修改
限制值),需要以根操作员的身份登录进入系统,然后使用- a限制参数(如果使用的是b a s h或者
k s h的u l i m i t命令,请使用- H a参数),如下所示:
336使用第五部分监管你的系统
下载
正如所看到的,以根操作员身份在t c s h的s h e l l中查看到的限制值和上面我们看到的情况有
很大不同。这也就是另外一个不以根操作员的身份运行操作系统的充分理由!做为一个系统
管理员,可以使用这些设置值来限制每个用户能够使用的内存总量或者进程个数。在有许多
人正在你的计算机上同时工作而你又希望保留系统内存的时候,这样做是极其便利的。而对
于独立的一台计算机上使用L i n u x操作系统进行正常登录和工作的情况来说,你将会发现那些
缺省的限制值其实是相当合理的。
21.3.4 使用kill命令收回内存
如果需要迅速收回内存,作为不得已的情况下的最后一个杀手锏,可以使用k i l l命令来终
止程序的运行。如果想k i l l掉某个特定的程序,应该首先使用p s命令列出当前正在执行中的进
程的清单,然后再使用k i l l命令把其中的某一个或者全部都终止掉。在缺省的情况下, p s命令
将列出那些你所拥有并能够使用k i l l命令终止的进程,如下所示:
p s命令会列出当前正在运行的程序以及这些程序的进程号,也就是它们的P I D。可以使用
这些信息通过向k i l l命令发出一个- 9—也就是S I G K I L L—信号来终止掉某个进程:
# kill -9 809
那么,如果需要高效率地地回收内存,需要使用p s命令的- m参数,因为这个参数还可以
列出每个进程占用内存的情况,如下所示:
第21学时系统监管基础用用337 下载
338使用第五部分监管你的系统
下载
根据上面的显示出来的资料,应该看出如果希望最大限度地收回内存,就应该终止网景
公司的网络浏览器程序,因为它正在使用着将近9 M B的系统内存。虽说在一般情况下不需要
使用k i l l命令来终止程序,但是k i l l命令在你必须要终止那些“越轨”的程序或者那些没有响
应的程序的时候还是非常有帮助的。k i l l命令的工作原理是:向L i n u x操作系统的内核送去一
个系统操作信号和某个程序的P I D,这样系统内核就可以对P I D指定的进程进行指定的操作。
除了那个最为卤莽和无情的- 9,也就是S I G K I L L参数之外,还有各式各样可以使用的系统操
作信号。通过使用k i l l命令的- l参数,可以看到一个各种不同的信号的清单,如下所示:
如果想了解关于这些信号和k i l l命令的详细资料,请阅读它的使用手册页。
p s命令有二十多个命令行参数,而且还可以列出所有正在运行中的进程的清单。请阅读
p s的使用手册页了解更详细的资料。还可以使用下面就要介绍的t o p命令来查找和终止进程。
21.4 使用top和xload命令获取系统负载信息
保存在子目录/ u s r / b i n中的t o p命令是一个系统监示程序,它用来显示L i n u x操作系统当前
正在如何管理着内存、交换文件和进程等方面的统计数据。t o p命令还会显示出系统已经运
行了多长的时间、C P U的工作状态、每个进程的规模等更多的信息。在典型的情况下,使用
t o p命令的方法应该是在一个独立的控制台或者单独的X 11终端窗口中运行它(如图2 1 - 1所
示)。
t o p命令还有一些交互化的控制部件,包括一个帮助画面,可以使用键盘上的问号键( ?)或
者字母H键进入这个帮助画面。还可以把各种信息显示方式切换为允许或者禁止状态,比如说
按照内存使用量的情况来排列进程、或者限制每次显示的进程数量等等。当只想监控占用系
统内存量最大的前五个进程的时候,这个办法就会非常便利;而当计算机开始执行一些很少
见的磁盘操作或者对文件进行交换的时候,这个办法还能够帮你诊断系统出现的问题。
图21-1 t o p命令可以随时显
示系统的运行情况
还可以使用t o p命令来交互式地终止进程,这需要在这个程序启动运行之后使用键盘上的
K键来操作;或者还可以使用键盘上的R键来改变某个进程的优先权( C P U分配给一个任务的执
行时间的长短)。t o p程序有1 9个不同的交互操作命令。并且可以通过增加或者减少不同的的信
息部分、增加或者减少进程显示的个数,最后定制出有自己特点的监控画面。请阅读表2 1 - 1
中的详细资料。
表21-1 top命令中使用的单键命令
命令说明
c 显示命令名称或者完整的命令行
Ctrl + L 刷新显示画面
f 增加或者减少数据显示域
H 按照内存使用量的大小顺序排序显示
h,? 显示帮助信息画面
i 切换显示休眠或者无响应的进程画面
k 使用某个进程的P I D终止它
l 切换一般或者最大清单的显示画面
m 切换内存信息的显示画面
n,x 设置进程的个数( n是交互式方式)
P 按照C P U占用情况的顺序排序显示
q 退出
r 改变某个进程的优先权
S 改变C P U占用情况的显示画面
s 设置更新显示画面的时间间隔
空格键更新显示画面
t 切换进程或者C P U状态显示画面
W 变成当前设置值到$ H O M E / . t o p r c文件中
在X 11环境下使用的x l o a d命令不象t o p命令那样只是显示出一些数字,它可以直观地给出
系统负载的运行情况图。系统负载随着计算机的不同而有所变化,但是一般情况下,如果计
算机出现了不正常的磁盘活动,就可以断定系统已经是过载了,因为进程正在不停地从数据
交换文件中换入换出。当运行了太多的程序的时候, x l o a d命令会给你显示出一个可视化的报
警信息,如果你是在一个8 M B或者1 6 M B的L i n u x系统上运行X 11的时候,这就对你更有帮助
了。
x l o a d命令有8个不同的命令行参数,可以自行设置移动的图形、比例线或者背景的颜色。
O p e n L i n u x操作系统中还带有许多其他的能够帮助你的应用程序,可
以通过它们的图形化输出来监控系统。如果正在使用控制台,可以试试
t l o a d命令。如果你使用的是X 11,可以试试x o s v i e w客户程序,这个程序
还可以显示出计算机的网络和串行口的工作状态。
21.4.1 使用uptime和w命令确定Linux操作系统已经运转的时间
保存在子目录/ u s r / b i n中的u p t i m e命令会显示L i n u x操作系统已经运行了多长时间、当前有
多少用户正在系统上还给出三种系统负载平均值,如下所示:
# uptime
第21学时系统监管基础用用339 下载
12 : 44am up 8 : 16 , 3 users , load averge : 0.11 , 0.10 , 0.04
如果对你来说这些信息量太少,可以试试w命令,这个命令先显示与u p t i m e命令同样的信
息,然后再列出当前已经登录的用户正在做些什么事情,如下所示:
w命令给出的信息多了一些,如果需要监控一个有许多用户的繁忙的系统,这个命令就会
特别有帮助。
21.4.2 使用pppstats和mailstats命令获取网络和邮件信息
保存在子目录/ u s r / s b i n的p p p s t a t s命令会显示出一个动态的关于P P P连接状态和P P P活动的
统计信息画面。这些信息与i f c o n f i g命令(我们在第1 0学时教程“连接到因特网”中介绍了这个
命令)的输出很相似。如果想使用p p p s t a t s程序,需要在你连接到I S P之后在它的命令行中指定
那个P P P接口(通常是0):
上面的内容动态地显示了p p p s t a t s命令工作的情况:在启动一个新闻阅读任务操作运行的
过程中,每隔5秒种就会显示一行状态统计数据。
m a i l s t a t s程序是s e n d m a i l软件的一个组成部分,它存放在/ u s r / b i n子目录中。可以使用这个
命令来生成关于系统的邮件使用情况的报告。这个命令通过读出子目录/ v a r / l o g中的一个名为
s e n d m a i l . s t的文件中的数据来进行工作。如果想建立并且使用这个文件,就必须在运行
s e n d m a i l软件包的时候使用-O StatusFile = /var/log/sendmail.st参数,或者在/ e t c / s e n d m a i l . c f文
件中设置好相应的参数。作为一个测试,你可以对子目录/ v a r / s t a t e中的一个空的s e n d m a i l登录
记录文件试试这个命令,如下所示:
# mailstats -f /var/state/sendmail.st
Statistics from Wed Dec 23 20 : 48 : 29 1998
M msgsfr bytes_from msgsto bytes_to Mailer
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
T 0 0 K 0 0 K
21.4.3 使用statserial命令监控串行口
最初由J e ff Tr a n t e r编写的s t a t s e r i a l程序可以用来显示串行口的状态,并且当你需要对调制
解调器或者串行口进行检查纠错的时候更可以节省时间和精力。如果想使用s t a t s e r i a l命令(保
存在u s r / b i n子目录中),必须在这个程序的命令行指定需要查看的设备。比如说,通过在
340使用第五部分监管你的系统
下载
s t a t s e r i a l命令的命令行上指定调制解调器的符号连接就可以让它来监控那个调制解调器,如下
所示:
必须是根操作员才能使用s t a t s e r i a l程序。请试试像下面这样使用
s t a t s e r i a l命令:
su -c " statserial /dev/modem "
21.5 管理用户的存取权限
做为系统管理员,一个主要的任务就是管理系统上的用户。这些工作包括为新用户建立
帐号、分配用户子目录、为用户指定一个初始的s h e l l而且可能还需要对每个人所能够使用的
磁盘空间、内存以及进程个数等设置不同的限制值。本小节将介绍如何使用各种命令行程序
(比如l i s a程序)来管理用户,当然,当运行X窗口系统的时候也可以使用图形化的工具软件来
完成任务。
21.5.1 使用adduser命令建立用户
在安装好O p e n L i n u x操作系统之后,必须要做的头几件事之一就是要为家庭里的其他成员
建立用户帐户。(安装O p e n L i n u x操作系统的时候已经为自己建立了一个帐户了。)应该通过用
户帐户来完成O p e n L i n u x操作系统中所有的工作,并且通过使用s u命令的方法来完成系统管理
工作。在L i n u x操作系统有好几种方法可以用来建立新用户,但是在本小节中,我们只介绍其
中最简单的一种方法:使用一套三个命令: a d d u s e r、p a s s w d和c h f n命令。
建立新用户的第一个步骤是执行保存在/ u s r / s b i n子目录中的a d d u s e r命令。你必须是根操作
员才能运行这个程序。如果你作为一个普通的用户想试试执行a d d u s e r命令,这个命令会报告
出错,如下所示:
# adduser
Only root may add users to the system .
a d d u s e r程序还要求你在它的命令行上指定一个用户名,如下所示:
第21学时系统监管基础用用341 下载
上面的命令将生成一个帐户、分配一个用户识别码( U I D)和一个用户组识别码( G I D),然
后再在/ h o m e目录下建立一个名为c l o o b i e的子目录。作为一条备忘录, a d d u s e r程序最后会提
醒你为新的用户设置一个口令字。
21.5.2 使用lisa命令管理用户
l i s a命令是O p e n L i n u x操作系统中的一个基本的系统管理工具程序。可以使用l i s a命令通过
它的图形化界面建立和管理用户。事实上,可以使用- u s e r a d m命令行参数直接进入到l i s a命令
的用户管理画面,如下所示:
# lisa - - useradm
按下回车键之后,l i s a命令将会形成如图2 1 - 2所示的画面。
使用上下光标移动键在l i s a命令的菜单中移动,在相应的项目上按下回车键就可以对用户
进行显示、增加和删除操作。
21.5.3 使用passwd命令改变口令字
新术语建立了新的用户之后,必须使用passwd 命令设置一个口令字。这个命令将在子目录
/ e t c中的p a s s w d文本数据库中生成一个缺省的x数据项。而真正的口令字,会经过加密之后保
存到/ e t c / s h a d o w文件中去。/ e t c / s h a d o w文件与/ e t c / p a s s w d文件的读权限是不同的。(虽然每个
人都可以读/ e t c / p a s s w d文件,但是只有根操作员才有查看/ e t c / s h a d o w文件的权限。)为了说明
它的工作过程,在下面的例子中我们先显示出用户c l o o b i e的p a s s w d和s h a d o w文件中的相应数
据;再为这个新用户建立一个新的口令字;最后,这个例子将显示s h a d o w口令字文件中的新
用户数据项。如下所示:
# fgrep cloobie /etc/passwd
cloobie : x : 503 : 504 : Caldera OpenLinux User : /home/cloobie : /bin/bash
342使用第五部分监管你的系统
下载
图21-2 l i s a命令为O p e n L i n u x
操作系统提供了一个
简单易用的用户管理
界面
从上面的内容可以看出虽然已经建立了帐户,有了用户名、U I D、P I D、姓名、子目录和
缺省的s h e l l,但是口令字数据域还只是用x来代替的。而s h a d o w口令字文件的对应内容是:
# fgrep cloobie /etc/shadow
cloobie : *notset* : 9000 : 0 : 10000 : : : :
如果想要增加一个口令字,敲入p a s s w d命令,后面再跟上那个新用户名:
# passwd cloobie
New UNIX password :
Retype new UNIX password :
passwd : all authentication tokens updated successfully
你会被要求先输入一个口令字,然后再把口令字重新输入一遍进行校验。如果一切顺利,
新的口令字就会记录到/ e t c / s h a d o w文件中去。如下所示:
# fgrep cloobie /etc/shadow
cloobie : hQSxtwq7CvJ3. : 10584 : 0 : 10000 : -1 : -1 : -1 : 1073917872
/ e t c / s h a d o w数据项中包括了用户的名称、一个经过加密的口令字还有一串数值分别代表
以下的意义:
• 对口令字进行强制性修改之前的最短和最长天数
• 什么时候警告用户需要修改自己的口令字
• 发出警告之后多长时间之内用户可以修改他的口令字
• 在一个帐户失效之前用户可以使用多长时间
此后,用户就可以使用p a s s w d命令来修改他们自己的口令字,应该鼓励他们经常这么做。
必须了解并不是所有的L i n u x操作系统都使用了s h a d o w口令字机制。
这种口令字的保护机制把整个系统上的口令字除了系统管理员之外对所
有人都设置为不可读,这样在整个系统的安全性方面多少会有所增加。
做为系统管理器,如果有人忘记了他自己的口令字,可以替他进行查找
修改。但是可千万别忘记了你自己的口令字!
最后,需要使用c h f n命令输入关于用户的一些个人资料,或者也可以让用户自己输入这
些信息。保存在子目录/ u s r / b i n中的c h f n命令使用的时候后面要加上一个用户名,它会提示你
输入四项个人资料:
# chfn cloobie
Changing finger information for cloobie .
Name [ Caldera OpenLinux User ] : Heronimous J. Cloobie
O ffice [ ] : Maritime Science Historian
O ffice Phone [ ] : 703 555 - 1234
Home Phone [ ] : 703 555 - 1235
Finger information changed .
如果现在再来查看一下/ e t c / p a s s w d文件中的数据项,你可以看到:
# fgrep cloobie /etc/passwd
cloobie : x : 503 : 504 : Heronimous J. Cloobie , Maritime Science Historian ,
703 555 - 1234 , 703 555 - 1235 : /home/cloobie : /bin/bash
这些信息是f i n g e r命令会用到的。用户真实的姓名在电子邮件信息中,也可以与他的用户
名一起使用,如下所示:
第21学时系统监管基础用用343 下载
f i n g e r命令将从/ e t c / p a s s w d文件中截取出这个用户的个人资料并显示为一个比较容易理解
的格式。在每个用户的/ e t c / p a s s w d数据项中还应该注意到的另外一件事是在尾部显示的用户
所使用的s h e l l的名称。这个独特的方法不仅可以用来指定用户使用的s h e l l类型(L i n u x操作系统
的缺省设置指定b a s h为缺省的s h e l l),还可以用来限制这个用户只能运行某个特定的程序。
21.5.4 限制登录
用户通常可以在他们登录进入系统之后使用保存在e t c子目录中的c h s h命令改变他们使用
的s h e l l的类型。可以使用c h s h命令的- l(列清单)参数列出当前可供选用的各种s h e l l的清单,如
下所示:
c h s h命令会查看/ e t c子目录中的一个文件名为s h e l l s的文件并显示一个清单。但是这并不意
味着这些s h e l l都是可以使用的(已经安装在系统中)了,它们只是“可以选用”而已。可以编辑
这个文件,增加或者删除那些可以由你的用户指定的s h e l l的名称。必须确保在这份清单中列
出的所有的s h e l l都已经安装在系统中了。如果想改变这些s h e l l,可以敲入:
# chsh -s /bin/ksh
Changing shell for root .
Shell changed .
也可以使用c h s h命令指定一个程序,而不仅仅是一个s h e l l,这样当用户登录进入系统的
时候就立即运行这个程序,比如:
# chsh -s /usr/bin/pico cloobie
Changing shell for cloobie .
Warning : " /usr/bin/pico " is not listed as a valid shell .
Shell changed .
如果这个程序并未列在/ e t c / s h e l l s文件中的s h e l l清单上, c h s h会提出警告。现在,你可以
看看这个变动是否已经生效:
# fgrep cloobie /etc/passwd
cloobie : x : 503 : 504 : Heronimous J. Cloobie , Maritime Science Historian ,
703 555 - 1234 , 703 555 - 1235 : /home/cloobie : /bin/bin/pico
上面的例子指定了文本编辑器程序p i c o,可以允许某个用户进行文字处理、打印或者对文
档进行拼写检查操作,但也就仅止于此了!这个用户登录进入L i n u x操作系统的时候,这个用
户立刻就进入到这个文本编辑器程序当中;而当他从这个文本编辑器程序退出的时候,也就
344使用第五部分监管你的系统
下载
第21学时系统监管基础用用345 下载
退出了系统登录。这是一个非常便利的技术,可以使用它来对某些用户,特别是儿童,进行
限制,比如说你只是想让他们玩玩游戏的话。
如果想对所有O p e n L i n u x操作系统上的新用户设置缺省的s h e l l或者他们的用户子目录的
话,请使用l i s a命令,如下所示:
# lisa - - useradm
按下回车键之后,在菜单(如图2 1 - 2所示)中找到并选择Set default(设置缺省值)项目之后按
下回车键。将会看到一个如图2 1 - 3所示的l i s a菜单。
还可以在相应的位置放上其他全局性的设置值和限制值。在2 1 . 5 . 5小节中,我们将介绍怎
样才能限制系统中的硬盘使用量。
21.5.5 设置硬盘配额
新术语在一个大型的、多用户的系统上,“硬盘配额” (对用户可以使用的硬盘驱动器存储
容量的限制)不仅仅是一种生活方式,还是一件必不可少的事情。可以在L i n u x操作系统中实
行硬盘配额,而且必须这么做;尤其是在担心硬盘空间可能会不够或者是在担心用户可能会
生成巨大的文件从而使硬盘驱动器过载的情况下更需要这些做。还可以把硬盘配额技术当作
一种报警机制(也许还能当作是对新硬盘的一个调整)。本小节将介绍怎样对硬盘配额进行开始、
设置和结束等操作。
使用q u o t a、q u o t a o n和q u o t a o ff命令对硬盘配额进行管理
硬盘配额可以从几个方面对硬盘空间的总量进行限制。可以使用G I D对一组用户设置配
额;也可以对单独的某一个用户实行限制。如果你想管理硬盘配额,会需要用到下面的部分
或者全部命令:
O p e n L i n u x操作系统所包括的缺省的L i n u x内核不支持硬盘配额技术。
必须配置、重建和安装一个新的支持硬盘配额技术的L i n u x内核。如果想
了解关于重新建立O p e n L i n u x操作系统内核以支持硬盘配额技术的全面与
细致的操作指导,请浏览下面的站点:
h t t p:// www.calderasystems.com/ support/ techguide/ COL12-Kernel-Rebuide-
1 . h t m l.
图21-3 l i s a命令可以对所
有O p e n L i n u x操作
系统上的新用户设
置缺省的s h e l l或者
他们的用户子目录
• quota—生成关于硬盘配额的报告
• quotaon—对用户打开硬盘配额功能并设置硬盘配额
• quotaoff—对用户关闭硬盘配额功能
• repquota—也生成关于硬盘配额的报告
• edquota—编辑调整用户的配额
• quotacheck—检查文件系统的配额使用情况
在这本书里我们不会详细讨论这些程序的所有细节(请阅读相关的使用手册页),但是在这
一小节我们将介绍如何对刚才建立的新用户设置一个磁盘配额。需要做的第一件事情是激活
L i n u x文件系统的硬盘配额功能。这就需要对/ e t c子目录中的文件系统表文件f s t a b进行编辑。
在对/ e t c子目录中的系统配置文件,特别是文件系统表f s t a b文件进行
编辑的时候一定要细心谨慎!必须首先制作了相应的备份拷贝,然后还
要保证没有进行不正确的设置,否则就可能会在系统启动的时候出现问
题。别说我没警告过你!
首先确定你以根操作员的身份登录进入系统,然后使用喜欢的文本编辑器程序打开f s t a b
文件,编辑内容包含L i n u x操作系统分区数据项的那些语句行,如下所示:
# < device > < mountpoint > < filesystemtype > < options > < dump > < fsckorder >
/dev/hda3 / ext2 defaults 1 1
现在在单词d e f a u l t(缺省)后面加上一个逗号和单词u s r q u o t a,如下所示:
/dev/hda3 / ext2
default , u s r q u o t a 1 1
把/ e t c / f s t a b文件存盘。接下来,使用t o u c h命令建立一个叫做q u o t a . u s e r的文件,并把这个
文件的属性设置为可读写的,如下所示:
# touch /quota.user
# chmod 600 /quato.user
完成上面的操作后,使用s h u t d o w n命令和它的- r重启动参数重新启动计算机。再次以根操
作员身份登录,然后执行/ u s r / s b i n子目录中的e d q u o t a命令和这个命令的- u参数为新用户编辑硬
盘配额,如下所示:
# edquota -u cloobie
e d q u o t a命令会读入在根目录(也就是/目录)中的u s r. q u o t a .文件。这个文件通常是一个二进
制文件,但是e d q u o t a命令会使用你的E D I TO R环境变量定义的文本编辑器程序打开它。如果
不喜欢缺省的文本编辑器程序,可以先使用下面的命令行临时指定一个你喜欢使用的:
# EDITOR = /usr/bin/pico ; export EDITO R
上面的命令会让e d q u o t a命令使用p i c o文本编辑器程序。当e d q u o t a命令运行的时候,必须
在编辑器程序中把下面的文本内容加到文件结尾:
Quotas for user cloobie :
/dev/hda3 : blocks in use : 58 , limits ( soft = 0 , hard = 0 )
inodes in use : 41 , limits ( soft = 0 , hard = 0 )
虽然懂不懂上面的这些数据的含义并不重要(请阅读保存在子目录/ u s r / d o c / H O W TO / m i n i
中的由Alber M.C. To m编写的m i n i - H O W TO,Q u o t a),但是可以很容易地为用户的子目录设置
文件的最多个数和最大长度。如果想要把硬盘空间( b l o c k s)限制设置为3 - 5MB ,把文件
(i n o d e s)个数限制设置为5 0 0和1000 个,请在b l o c k s和i n o d e s清单中修改(s o f t)软限制值和(h a r d)
346使用第五部分监管你的系统
下载
硬限制值:
Quotas for user cloobie :
/dev/hda3 : blocks in use : 58 , limits ( soft = 3000 , hard = 5000 )
inodes in use : 41 , limits ( soft = 5 0 0 , hard = 1000 )
把这个文件存盘。然后,做为最后的一个步骤,必须再次使用e d q u o t a命令设置一个预警
期,但是这次要使用它的- t参数。当新用户超过了较低的,也就是( s o f t)软限制的时候就会被
警告。如下所示:
# edquota -t cloobie
然后就可以对文件个数超量或者硬盘使用过量的情况设置预警期警告,如下所示:
Time units may be : days , hours , minutes , or seconds
Grace period before enforcing soft limits for users :
/dev/hda3 : block grace period : 1 days , file grace period : 1 days
如果想在用户超过限制的时候立刻给予警告,可以把预警期设置为1天。(也可以使用分
钟或者秒)。最后,可以使用q u o t a命令查看新的配额,如下所示:
# quota cloobie
Disk quotas for user cloobie ( uid 502 )
Filesystem blocks quota limit grace files quota limit
grace
/dev/hda3 58 3000 5000 41 500 1000
使用磁盘限额在某些情况下是必不可少的。如果硬盘空间很宝贵,这将会是管理硬盘资
源的方法之一。
21.6 课时小结
本学时教程介绍了一下基本的系统管理技术,需要使用这些技术来维护一个运行着
O p e n L i n u x操作系统的计算机。还学习到怎样才能在L i n u x操作系统运行的时候获得那些关于
计算机内存正在发生的事情的信息以及如何控制后台进程、用户和系统资源—比如硬盘驱
动器空间等内容。
21.7 专家答疑
问:我试了试把p i c o定义为缺省的编辑器程序,但是我不是得到一条出错信息,就是v i编
辑器程序又运行了。
答:请确定已经从O p e n L i n u x操作系统的C D - R O M光盘上安装了p i n e电子邮件程序(可以
使用l i s a、r p m或者g l i n t来安装它)。这个p i c o编辑器程序是p i n e软件发行版本的一个组成部分。
问:我使用l i s a命令从系统中删除了一个用户,但是这个用户的子目录还在/ h o m e目录中。
答:象l i s a这一类工具程序不会删除某个用户的子目录。如果正在使用的是X 11,请运行
Red Hat公司出品的u s e r c f g客户程序。当单击了某个用户的名字然后又在u s e r c f g的对话框中单
击了R e m o v e(删除)按钮的时候,会看到一个删除这个用户的用户子目录的选项。还有一种方
法,以根操作员的身份登录进入系统,并使用r m命令删除这个用户的文件和子目录。还需要
删除这个用户的电子邮件文件(在/ v a r / s p o o l / m a i l子目录中)。
问:O p e n L i n u x操作系统中还有那些工具程序可以用来管理用户?
答: 为了帮助系统管理员解决一次性建立几十甚至几百个新用户的难题,可以使用
第21学时系统监管基础用用347 下载
n e w u s e r s命令。这个命令会读一个包含了新用户的用户名和口令字的文本文件并可以通过一
个命令行建立许多用户。如果想修改某个用户的帐户,可以使用u s e r m o d命令。还可以使用
u s e r d e l命令来删除用户。
21.8 练习题
1. 使用其他的X 11工具程序如x o s v i e w、x l o a d或者p e r f等来查看系统进程。这些客户程序
之间有什么不同?
2. 在子目录/ h o m e和子目录/ v a r / s p o o l中可能会包含着一些属于O p e n L i n u x操作系统中用户
的文件。怎样才能从系统上简单地找出属于某个用户的全部文件?
348使用第五部分监管你的系统
下载 |