




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、系统管理工具包: 问题和陷阱注意那些陷阱简介: 避免常见的缺陷和陷阱,以帮助确保您的系统正常地运行。了解处理磁盘已满或受损坏的系统的正确方法,这与在工具库中配备各种工具以确保准备好快速地处理丢失的文件或不安全的系统一样重要。本文重点关注于 UNIX® 管理员所面临的一些最常见的问题,以及实现安全且有效的解决方案的方法。关于本系列典型的 UNIX® 管理员拥有一套经常用于辅助管理过程的关键实用工具、诀窍和系统。存在各种用于简化不同过程的关键实用工具、命令行链和脚本。其中一些工具来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员工作压力的要求。本系列文章主要专
2、注于最大限度地利用各种 UNIX 环境中可用的工具,包括简化异构环境中的管理任务的方法。删除打开的日志文件在您完成管理任务的过程中可能会注意到,由于磁盘空间的原因,系统变得运行缓慢。如果这是个非常重要的系统,那么不大可能关闭计算机并添加更多的存储设备,而且您可能已经采用了配额系统以防止个别用户占用过多的磁盘空间。最合适的方法是查找那些可以删除的、存档到另一个系统的、或脱机存储的内容。为了实现这个目的,日志文件通常首当其冲,因为常常对 /tmp 和 /var 文件系统设置了有限的空间。(清单 1 向您显示了我的 iBook 上的 /tmp 和 /var,这台计算机上并没有运行任何繁忙的 服务。)
3、某些服务,如 Web 服务器、Java2 Enterprise Edition (Java EE) Web 应用程序和数据库,都可能创建大量的日志,特别是在有人将其配置为调试模式的情况下。清单 1. /tmp 和 /var 中可能堆积了大量的数据,即使在个人工作站上chrishBender 530$ sudo du -sh /tmp/ /var/ 44K /tmp/1.0G /var/在证实了没有人需要这些日志数据之后,您可以快速地使用 rm 命令删除它们。但是这样做,您无法重新获得任何磁盘空间。如果不熟悉 UNIX 文件系统的语义学,您可能会认为需要重新启动计算机并且执行非常耗时的文件系统完
4、整性检查(在单用户模式中使用 fsck 命令)。在标准的 UNIX 文件系统中,您可以在文件打开或写入的时候删除它。这将从文件系统中删除该文件的名称,当使用该文件的程序关闭它时,操作系统可以重新获得其存储空间。许多程序常常使用这种特性来创建临时文件,它们可以创建文件、打开文件并删除文件。如果程序崩溃或正常退出,则将自动删除相应的文件,所以程序员不需要关闭文件或稍后对其进行删除操作。因为服务器保持打开相应的日志文件以便写入数据,而这些日志文件占用了大量的空间,所以这种情况是非常不利的。删除这样的文件只是从文件系统中删除了它的名称,而无法重新获得任何磁盘空间,直到相应的进程退出或关闭该文件。要解决
5、这个问题,您可以重新启动拥有这个日志文件的服务,不过该服务的中断可能会引起一些不必要的麻烦。另一种选择是对日志文件重命名,然后告诉相应的进程重新加载其配置文件。任何现有的处理过程将会继续,使用打开的日志文件直到正常完成,而任何新的请求将会记录到使用旧的名称创建的新日志文件中。根据约定,当您发送一个挂起信号(信号 1 或 HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。清单 2 显示了向所有正在运行的 Web 服务器进程发送挂起信号的一种方法。清单 2. 告诉 Web 服务器重新加载其配置文件并对文件进行复位操作chrishBender 507$ ps -
6、A | grep httpd | grep -v grep | awk ' print $1; ' | xargs -L 1 sudo kill -HUPPassword:上面的命令中包含了很多的操作,所以让我们来仔细地看一下管道的每个部分。ps 和 grep 命令用来在所有的进程中搜索 httpd(并且忽略用来搜索 httpd 进程的 grep 进程)。接下来,awk 只显示输出结果中的进程 ID,并将它传递给 xargs。然后,xargs 命令接受每个进程 ID(因为使用了 -L 1 以便一次提取一行内容),并使用 sudo kill -HUP 向相应的进程发送一个挂起信号
7、。删除关键的文件意外地删除工作系统中的一些关键文件,肯定会对系统造成损坏。尤其是对于共享库、可执行文件或重要的系统配置文件,很有可能意外地出现这种误操作。避免这个问题的方法之一是,不要以 root 用户登录到系统中(请参见以 root 用户登录部分)。常规的用户无法破坏重要的系统文件,除非您破坏了标准的权限设置。另一种方法是通过删除写入位,将相关目录设置为只读(请参见清单 3)。清单 3. 将重要的目录设置为只读chrishBender 541$ cd /etcchrishBender 542$ sudo find -d . -type d | xargs sudo chmod -w您可以使用
8、 find -d 选项对目录进行深度优先搜索(还指定了 -type d),然后使用 xargs 和 chmod 删除写入位,使每个目录变成只读。这可以防止任何人创建新的文件,更重要的是可以防止删除现有的文件。它不会阻止具有合适权限的用户(即您自己)对现有的文件进行编辑。使用这种方法时应当小心!如果有一个设计糟糕的应用程序,它需要一个可写入的目录,那么它可能会执行失败,并生成一些令人奇怪的错误消息。大多数程序都将其自动文件创建和删除限制于 /tmp 和 /var 目录。请记住,在安装需要把配置文件或其他内容放入到只读目录中的新软件时,您将不得不重新写入位置位(可以使用相同的处理方法,但使用 u+
9、w 而不是清单 3 命令中的 -w)。通过复制修复受损坏的系统有许多情况都可能对系统造成损坏,但其中大多数都需要访问系统控制台以修复相关内容。如果由于失控进程而损坏了系统(请参阅本系列中的文章“监视运行缓慢的系统”,在参考资料部分提供了相应的链接),消耗了所有的可用进程槽,或者占用了过多的内存而导致计算机将所有的时间花费在与硬盘的交换中,那么您需要终止那些损害系统的进程,或者如果根本无法登录并执行 kill 命令的话,直接重新启动该计算机。如果您可以访问该系统,但由于某种原因而无法终止损害系统的进程,可以切换到单用户模式,这将停止所有非关键的服务以及任何用户运行的进程。要让计算机进入单用户模式
10、,在基于 System V 的 UNIX 中可以使用 telinit 命令 (sudo telinit 1) 或者在来源于 Berkeley Software Distribution (BSD) 的操作系统中使用 shutdown 命令 (sudo shutdown now)。当您在单用户模式中完成了修复任务之后,重新回到正常状态的最简单的方法是重新启动该计算机;同样,根据系统的具体情况,可以使用 telinit (telinit 6) 或 shutdown (shutdown -r now) 实现重新启动。在最坏的情况下,您的系统可能遭受了很大程度的损坏,以致于您不得不从操作系统安装媒介或
11、修复盘进行启动。它们通常提供了最基本的单用户环境,您可以使用这个环境进行磁盘检查 (fsck)、系统安全漏洞检查,或者从备份恢复受损的文件。您手头有备份,对吧?当事情变得一团糟时,好的备份策略将为您省去大量的工作,并且它非常适合于那些不够细心的用户(他们总是会不小心删除自己的重要文件)。保存序列化的文件和存档有时,仅保存文件还不够,您可能需要最近的版本或上个星期的版本。这种情况很可能会出现,比如人力资源部门有人覆盖了工资处理文件的唯一副本,或者更糟糕,覆盖了重要的系统配置文件。保存系统中重要(以及用户)文件的增量备份是防止这种灾难出现的一种重要方法。您曾经删除或覆盖过重要的文件吗?这很容易解决
12、,您只需要从增量备份中提取昨晚的版本即可。清单 4(在我的系统中,我称其为 newer-archive.sh)向您介绍了一个简单的 Shell 脚本,它用来创建比指定的文件更新的存档文件。您可以使用该脚本为那些比最近增量备份更新的文件创建增量备份。清单 4. 一个简单的增量存档脚本#!/bin/sh# Make an incremental archive containing files that have been# modified since the last archive was created.# Usage:# newer-archive.sh -o new-file.tar
13、-nt old-file filesold_file=""new_file=""files=""archiver="tar -T - -czpsSf"while "$1" != "" ; do case $1 in -o) new_file=$2 shift ; -nt) old_file=$2 shift ; *) files="$files $1" ; esac shiftdonefor path in $files ; do find $path -
14、newer $old_filedone | $archiver $new_file-o 选项指定了输出文件,而 -nt 选项指定了用作基准的文件,任何比该文件更新的文件都将添加到存档中。在列出需要进行存档的选项、文件或目录之后,您需要将它们全部添加到输出文件。您可以对这个脚本进行修改,以便使用任何种类的存档工具,假定您找到了一种通过管道传递需要进行存档的文件列表的方法。如果您的系统中没有安装 GNU 的 tar,那么您可能还需要调整其中的 tar 选项。您可以将这个脚本与 date 命令组合在一起使用(请参见清单 5),以创建包含当前日期和时间的存档。清单 5. 使用 date 来指定备份存档
15、的名称chrishBender 525$ sudo /bin/newer-archive.sh -o incremental-$(date +%Y-%m-%d-%H.%M.%S).tar.gz -nt incremental-2006-09-06-11.15.03.tar.gz /Users通过在 date 命令中使用 + 选项指定不同的输出格式 (year-month-day-hour.minute.second),您可以创建包含当前日期和时间的文件名,使用最近的增量备份(该备份已经过了一个月,对于备份之间的间隔来说太长了)作为引用的旧 文件,备份所有更新的或修改过的用户数据。另一种选择是使
16、用 RCS 的 ci 和 co 命令为每个文件创建更改的历史。您还可以使用 ci 签入 文件。这将创建一个历史文件(ci 加上文件名将创建另一个包含文件历史及其较早修订版本的文件名),并将该文件设置为只读。使用 co -l 签出 该文件并重新将其设置为可写的。在完成了相应的更改之后,使用有意义的更改日志消息再次签入该文件(请参见清单 6)。清单 6. 使用 RCS 跟踪文件版本chrishBender 536$ ci -u points.txt points.txt,v <- points.txtenter description, terminated with single '
17、;.' or end of file:NOTE: This is NOT the log message!>> important points to cover in the article>> .initial revision: 1.1donechrishBender 537$ dir points.txt-r-r-r- 1 chrish chrish 170 Oct 6 14:34 points.txtchrishBender 538$ co -l points.txtpoints.txt,v -> points.txtrevision 1.1 (
18、locked)donechrishBender 539$ vi points.txtchrishBender 540$ ci -u points.txtpoints.txt,v <- points.txtnew revision: 1.2; previous revision: 1.1enter log message, terminated with single '.' or end of file:>> added another important point>> .doneci 命令的 -u 选项可以在签入文件的时候自动地签出该文件的一个
19、只读版本。co 命令的 -l 选项可以锁定该文件,以便您(并且只有您)可以对其进行编辑。RCS 只能够处理纯文本文件,如果您需要为二进制文件保存较早的版本,可以使用其他功能更加强大的工具,如 Subversion(请参见参考资料部分)。创建用户或组在大多数系统中,添加新用户或组似乎只需要使用最喜欢的文本编辑器修改 /etc/passwd 文件(以及 shadow 密码文件,它用来保存密码)或 /etc/group 文件。这种方法很容易记住,而该文件的格式也并不复杂,可以很快地完成这项任务。但是出于很多的原因,您不应该这样做,这也正是大多数 UNIX 系统,特别是最新的 UNIX 系统,提供专门
20、用于创建新用户和组的工具的原因。编辑这些重要的系统文件可能会带来麻烦。虽然这些文件的确很简单,但还是有可能受到其他因素的影响并把事情弄得一团糟。可能您的编辑器会在编辑这些文件的时候对其进行锁定,而这将会使得其他用户在您编辑这些文件的时候无法登录。在手动添加了用户之后,您还有一大堆的工作需要完成。您需要创建一个新的 home 目录,使用标准 home 目录中的内容填充该目录,将用户添加到所有合适的组中,并创建一些系统级的内容,如新用户所使用的邮件缓冲。为什么要自找麻烦呢?可以使用用户和组的创建工具,这将为您节省时间和精力(并且可以确保不会将事情弄得一团糟,这将帮助您维持权威的声誉)。大多数标准的
21、 UNIX 系统都为管理员提供了 adduser(或 useradd)和 addgroup(或 groupadd)命令。许多 Linux® 分发版提供了易于使用的图形化工具(如 Fedora Core 的 User Manager),而 FreeBSD 的功能全面的 sysinstall 实用程序也可以完成用户和组的创建。在 Mac OS X 中,您可以使用 Accounts preferences 来创建用户,可以使用 NetInfo Manager 来创建新的组。以 root 用户登录正如您所知道的,root 用户在 UNIX 系统中具有所有的权限。root 用户可以执行任何操作
22、,正如常说的,“能力越强,责任越大”。仍然有一些用户坚持以 root 用户登录系统,即使他们所执行的操作并不需要用到其中所有的权限。在任何具有管理员权限的系统中,您应该始终为自己创建(并使用!)一个常规的用户帐户。而在执行需要 root 权限的操作时,使用系统中的 su(请参见清单 7)或 sudo(请参见清单 8)命令(可以使用您的系统中所提供的任何一个)临时切换到 root 用户。清单 7. 使用 su 命令临时切换到 root 用户chrishBender 514$ su -Password:# 清单 8 使用了 sudo 命令,以 root 用户的身份运行一个命令。清单 8. 使用 s
23、udo 命令,以 root 用户的身份运行一个命令chrishBender 517$ sudo idPassword:uid=0(root) gid=0(wheel) groups=0(wheel), 1(daemon), 2(kmem), 3(sys), 4(tty), 29(certusers), 5(operator), 80(admin), 20(staff)为什么要避免以 root 用户运行呢?错误的 rm 命令、或不小心将 tar 文件释放到错误的位置,这都可能对您的系统造成损坏,并需要大量的修复工作。确保系统的安全需要确保网络中所有系统的安全,这是毫无疑问的。保留服务器或路由器中的缺省密码,这无异于邀请那些不择手段的(甚至仅仅只是好奇的)人侵入系统。入侵者可能有意地或无意地对系统造成损害,使系统遭受破坏,或者更糟,利用系统中的漏洞偷偷地对其进行修改,以便分发垃圾邮件、盗版软件或其他的东西。确保系统安全的一个好的策略是拒绝任何操作,而不是允许任何操作。具体来说,关闭所有并不真正需要的网络服务,阻
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025债务转让合同协议范本
- 2025企业内部餐厅升级改造工程合同 施工合同协议书
- 2025二手设备转让合同的样本
- 2025租赁合同印花税计算方法探析
- 2025年食品安全试题
- 【清华大学】2024中国煤炭城市公正转型调研报告基于两个案例的研究报告
- 人教版八年级物理质量与密度基础知识点归纳总结模版
- 教师参加心理健康培训心得体会模版
- 广西项目可行性研究报告
- 专题八房地产金融融资方式与工具创新
- 2024年支气管哮喘临床诊疗指南:课件精讲
- 《滑翔伞模拟器控制系统的设计与研究》
- 公务员考试题库及答案4000题
- 专题04 物质结构与性质-2024年高考真题和模拟题化学分类汇编(解析版)
- 林权投资合作协议范本
- 中医康复治疗技术习题+参考答案
- 新疆大学答辩模板课件模板
- 中小学-珍爱生命 远离毒品-课件
- 2024年四川省广元市中考物理试题(含解析)
- 特种设备使用管理规则(TSG08-2017)
- 2023年山东烟台中考满分作文《这一路风光真好》6
评论
0/150
提交评论