优秀的Unix系统管理员是怎样工作的?来自InfoWorld的Paul Venezia尝试为我们总结优秀Unix系统管理员的九大特点。Paul是一位资深编辑与咨询师,关注Perl,PHP,SQL,FreeBSD,Linux和Windows等领域。
优秀的Unix管理员应该具有的品质之一:我们不使用sudo
就像“caps lock”对于极客来说只是一个可有可无的控制键一样,sudo也只是胆小者的拐杖。万一我们需要对root做一些事情,我们需要su到root,这个sudo废话毫无意义。
实际上,对于那些强制所有用户都要使用sudo的类Unix的操作系统来说,我们要做的第一件事情就是sudo su -,然后改变根口令,以便于以后我们可以更加方便地su -。使用sudo就像在带有充气减震器的水槽中打保龄球——的确很安全,但是你也别想一展身手了。
优秀的Unix管理员应该具有的品质之二:我们使用vi,而不是emacs,更不可能是pico或nano
虽然我们知道,对于许多Unix管理员来说,emacs更贴心一些,但是,实际上它只是Microsoft Word的Unix翻版而已。vi(和vim)才是那些真正的Unix极客们手中的利器,他们需要在完成任务的同时,不被那些emacs自带的毫无用处的东西把事情搞糟。Emacs居然内置了一款俄罗斯方块游戏,简直是岂有此理!
虽然我只能万般无奈地承认vim中那些花哨的功能(例如:代码折叠和语法高亮)可能只是一时失误,但是,在一天的工作即将结束之际,真正的Unix工作可以和vi的模型编辑概念很好地融合在一起却是不争的事实。除此之外,它那苗条的身材和通用的可移植性可以让它成为一个真正的编辑器。感谢Bill!感谢Bram!(编辑注:Bill Joy是vim编辑器的开发者,后来Bram Moolenaar对其进行了改进)。
优秀的Unix管理员应该具有的品质之三:我们把正则表达式当成我们的利器
对于正则表达式的排斥,甚至是漠视似乎都是“邪恶”的键盘造成的恶果。但是,对于我们来说,它是如诗般优雅的。它的强大表现在,任何其他的著名工具都无法和pcre (Perl Compatible Regular Expressions)的复杂性相匹敌。万一你需要在100000行文件中替换掉每一行的第三个字符(除了那些后面是数字4的字符之外),那么正则表达式不只是完成这个任务的一个工具而已——它还是完成这个任务的唯一工具。那些可怜的人时常会在他们的email中接收到一些字符串片段和一些声泪俱下的请求(寻求一个解析这些字符串的正则表达式),一般还会承诺请你喝一杯(但是从来没有兑现过)。
优秀的Unix管理员应该具有的品质之四:我们天生就比较懒惰
当遇到一个看起来需要很多手工的,重复性的工作才能解决的问题的时候,我们这些守旧派的Unix代表一定会选择编写一些代码来搞定它的。这通常会比手工操作更加节省时间,虽然有时候事实也并非如此。无论如何,我们宁愿把时间花费在可以以后被引用或者使用的工作上面,也不愿意简单地修复眼前这个问题。通常,当几年以后我们遇到了类似的问题,然后可以从我们的起始目录(home directory)中的一个文件yank几百行Perl代码,在短短的几分钟之内解决掉了这个问题,然后回过头去分析那些可以提高工作效率的其他代码的时候,我们就可以获得回报了。或者,我们也可以去玩一下愤怒的小鸟。
优秀的Unix管理员应该具有的品质之五:我们更喜欢优雅的解决方案
万一有好几种方法可以修复一个问题或者实现一个目标,那么我们会选择花费更多的时间来开发一个既可以解决当前的问题又能防止将来发生类似的问题的解决方案,而不是简单地贴上一块邦迪牌创可贴。这是因为我们讨厌再次遇到那些在我们的印象中已经解决过的问题。我们认为,万一我们可以提前多考虑几步,防止将来发生类似的问题,那么在将来,我们可以节省更多的精力。通常我们都是对的。
优秀的Unix管理员应该具有的品质之六:我们一般对事不对人
enlightenment有足够的把握可以让你的Unix基础知识达到一定的水平。这意味着我们从不认为一个问题会一直存到我们发现它为止。告诉一个优秀的Unix管理员,一个文件“vanished”了,他只会轻蔑地嘲笑你。证明给她看,这真的发生了,他就会不知疲倦地研究这个问题了,直到可以找到一个合理的原因和解决方案为止。许多人都认为这是傲慢和自负的表现。的确是——但是我们有这个资本。
优秀的Unix管理员应该具有的品质之七:我们研究问题的时候,比医生的检查还要细致
当处理一个大问题的时候,我们在“尸检”上花费的时间要比我们解决这个问题所花费的时间多得多。万一不是工作压力太大,让我们无暇分身去研究这个问题,那么我们一定会搞清楚这个问题的确切原因的。在一个强悍的Unix管理员的工作中,不存在不可思议的现象。每一种情况必须要有逻辑起点,并且可以按照合适的路径来追本溯源。简而言之,每一件事情都有原因,在找到这个原因以前,我们绝不放弃!
对于我们来说,通过HUPping一个进程,或者改变一个文件或777目录的权限来“止血”是一件很容易的事情,但是这连成功的一般都算不上。为什么这个进程必须要重启?这并不是必须的,我们需要知道为什么。
优秀的Unix管理员应该具有的品质之八:关于Windows,我们知道的也很多(过去我们只是装作不知道而已)
虽然在我们自己的机器上,我们可能并不运行Windows,并且,对于Windows服务器,我们似乎也不屑一顾,但是在诊断和修复Windows问题方面,我们却是行家里手。这是因为,当它们的“鲜血”流到我们的“版图”上的时候,我们必须要处理这些问题。但是,我们不喜欢承认这个事实,因为大多数情况下Windows都没有Unix那样深厚的逻辑基础,这让我们很困扰。参见上面的品质五和品质六。
优秀的Unix管理员应该具有的品质之九:几乎从来都不选择重启
Unix设备不需要重启。万一并非绝对没有其他选择,我们会花费数个小时在系统运行的状态下修复这个问题,而不是重启。我们的想法是除了内核或硬件改动,其他情况下都没有理由去重[注]启,重启只是修复这个问题的临时办法而已。万一这个问题发生了一次,并且通过重启被“修复”了,那么它还会再次发生的。我们宁愿修复这个问题,而不是简单地拔掉电源,等着它再次发生。
从“谎言”的角度来看,这些品质中的某些品质看起来会有点另类或者难以理解,那是因为他们本来就是如此的。其他人只能看到棘手和困难的时候,我们却看到启示,学习,经验,更重要的是,我们看到了逻辑。