Linux系统管理入门必须经历的三步

Linux系统管理员如何入门?这是很多Linux新手们关心的问题。一位CentOS的开发者,在英国伦敦工作的系统管理员Karanbir Singh近日撰写了一篇博文,对Linux新人如何进入Linux sysadmin的世界进行了阐述。以下为全文译文:

SA,大神与装机男:运维的工作到底啥样儿?

我们常常会看到这样的问题:面对 Linux 系统管理这个庞大的世界,应该从哪里开始?说实话,我觉得这个问题不存在一个清晰明确的答案。Linux 认证并非最理想的选择。你可以去参加一些培训课程,比如 RHCE。但是,如果没有任何背景信息而去参加培训,你可能无法享受到培训带来的好处,因为所有课程都有一个前提假设:你已经掌握了一些基本知识。

熟悉Linux以及发行版

一个开始系统管理员学习的方法是抓起一本相关主题的书来看(编辑推荐:51CTO读书频道的Linux版块有很多相关图书的样章)。然后安装几 个 Linux 版本(参考:几个比较知名的发行版),然后在你喜欢的版本上搞一些 VM 设置(参考:Linux下三大免费桌面虚拟机评测)。从一个版本开始,然后继续使用这个版本,至少用上几个月。但是,一旦熟悉了那些基础知识,你就要转向 其他发行版本,看看其他版本是如何工作的,这一点也非常重要。无论使用哪个版本,不同之处仅仅在于一些设计和平台常见通讯。最根本的操作系统还是 Linux,这一点不会改变。

使用一个新的平台时,有一点非常重要:你必须真正地投入进去。对此,有一个简单的方法:看看你现在正在做的事情,无论使用哪个平台,试着在这台 Linux 计算机上使用相同的方式去做系统的事情。掌握了那些基础的知识和操作之后,以后你就应该将这个 Linux 版本作为常用的工作平台。从低等级管理能力方面来看,这种方式并不会让你学到太多;不过,它可以让你学会从用户的角度来思考问题。

我一直都认为,最优秀的管理员一定是从用户的角度,从开发者的角度,然后从平台(和管理员)的角度,对问题进行思考。最后我们还要记住,计算机是用来工作的,而管理员的角色就是确保计算机能够充分发挥能力来完成工作。不要迷失了方向:目标仍然是做某件工作。

熟悉相关的应用程序/服务

我最初接触 Linux 的那段时间,常常会感觉很难与其他人的应用程序建立一种关联,很难弄清楚他们如何使用他们的计算机和网络。之所以很困难,因为我没有处于他们所在的位置, 甚至连跟上最新的情况都很困难。在寻找那种亲身体验的机会时,我认识到,和一个应用程序建立关联的最好方式就是加入他们的邮件列表。这样,你就可以看到其 他人遇到的问题,你也可以提出自己的问题,比如为什么那个事情要用那种特别的方式来解决,你还可以查看其他人贴出的 bug 报告。这些信息都清楚了展示了在“真实世界”中人们是如何使用这个应用程序的,这将为提供一个很好的根基。大约 14 年之后,我仍然认为特定程序的用户小组是学习一个应用程序的最好场所,你可以了解到如何对它进行管理,最好的部署方式,还有开发者/用户如何看待这个应用 程序的角度。

编写代码

最后,编程和实际写代码的能力也是有益的。不要相信那种到处流传的说法:管理员无需写代码。和周围优秀的系统管理员聊聊(有很多这样的人),你 会发现,几乎每个人都会告诉你,他们 40-60% 时间用于编写脚本,处理应用程序,而脚本的开发知识是有帮助的。我不是说你需要搞一个 Java 认证,但是你要对 bash 的基本编程有很好理解,至少能够使用 python、perl 和 ruby 中的一门语言(必要)。需要了解 unix/c 的传统想法仍然存在,不过现在,并不是有很多系统管理员需要深入到驱动程序开发那个层次,他们需要了解的大多数函数代码可以利用 bash、ruby、perl 或 python 进行很好的处理。

苹果的另一面:开源软件重镇

刚才一个苹果网站的链接在很短时间内成为Hacker News的头条。这个普通的网址却揭开了以封闭著称的苹果公司不太为人所知的另一面:开源社区的积极一员。

正如这个网页上苹果自己所说的,它是第一个将开源软件作为关键战略的主要计算机公司。了解苹果历史的人肯定知道此言不虚。苹果最重要的软件产品——Mac OS X的内核XNU再加上一些驱动等核心组件合称为Darwin,就是一个开源项目。这个开源项目有个可爱的吉祥物Hexley(达尔文的斗犬赫胥黎是也,不过为什么是鸭子的形状,是因为混合吗?),熟悉FreeBSD的人应该发出会心一笑吧:

这是一个堪称完美的混合内核,著名学院派操作系统Mach的微内核提供了足够的灵活性,也支持着系统的任务、线程、进程、消息传递(IPC)、RPC、SMP调度支持、保护式内存、虚拟内存管理等主要底层功能;而Unix正宗FreeBSD则满足了足够的性能要求,并提供了POSIX API、文件系统、网络栈、安全、抢占式多任务、用户与组管理、权限管理等特性;此外还有Apple独有的面向对象设备驱动框架I/O Kit。这个内核的模块性如此之好,以至于苹果的架构师们能够比较自由地为Mac电脑以及iOS设备选择底层硬件,从PowerPC到Intel,再到ARM……

Darwin架构图

作为目前普通用户最多的类Unix操作系统,Mac OS X中还内置了Unix中常见的各种开源软件,包括Ruby、Python、Perl等语言开发环境以及各种工具。也难怪现在越来越多程序员将Mac OS作为开发机,并渐渐“沦为果粉”……

苹果的另一个著名开源项目大家应该都听说过,但未必知道出自苹果。这就是浏览器引擎WebKit。WebKit(开源项目网址)是1998年苹果工程师开发的一个(KDE开源项目旗下)KHTML与KJS派生版本,开始的时候代码会提交到KDE项目中,但后来双方产生了矛盾而分裂。2005年6月,苹果宣布WebKit开源,成为一个独立的项目。

除了Safari之外,排名第三的开源浏览器Chrome也是基于WebKit的,甚至Adobe的AIR和Creative Suite CS 5也使用它来渲染HTML。当然,使WebKit日益重要的是手机,目前大多数智能手机浏览器包括Android、iPhone、黑莓、Symbian都基于WebKit,据估计目前用户已经超过4亿。今天的WebKit项目开发团队中,除了苹果的工程师外,Google也是生力军,此外还有不少RIM公司的人,他们应该是来自被黑莓收购的Torch浏览器开发团队。

苹果还有几个在更专业的领域里非常重要的开源项目,比如编译器框架LLVM,异构编程框架OpenCL,服务发现协议实现Bonjour等。其中,LLVM现在已经成为语言创新的温床,看看都有哪些项目因此而如虎添翼吧。

了解了苹果在开源方面的贡献,你对它的印象是否已经有所改观?其实也不稀奇,苹果是一家工程师文化深厚的公司,开源本来就是应该是工程师文化的一部分。