如何成为一个懒惰的系统管理员

更聪明地工作,而不是更努力地工作,并且仍然出色地完成你的工作。
272 位读者喜欢这个。
yawning cat

VM (Vicky) Brasseur。CC BY-SA 4.0

Linux 系统管理员的工作总是很复杂,并且常常充满各种陷阱和障碍。从永远没有足够的时间来完成所有事情,到尖头老板(PHB)在你尝试处理他或她刚交给你的任务时盯着你,再到你负责的最关键的服务器在最不合时宜的时间崩溃,问题和挑战比比皆是。我发现成为一个懒惰的系统管理员可以有所帮助。

我在即将出版的书籍《系统管理员的 Linux 哲学》(Apress)中详细讨论了如何成为一个懒惰的系统管理员,该书计划于 9 月份出版。本文的部分内容取自该书,特别是第 9 章“成为一个懒惰的系统管理员”。在我们讨论如何做到这一点之前,让我们简要了解一下成为一个懒惰的系统管理员意味着什么。

真正的生产力与虚假的生产力

虚假的生产力

在我工作过的一个地方,尖头老板相信一种叫做“走动式管理”的管理风格,这种风格的假设是,任何没有在键盘上打字,或者至少没有查看显示器上任何东西的人,都是没有生产力的。那是一个可怕的工作场所。部门之间存在很高的行政壁垒,造成了许多微小的孤岛,无用的文书工作负担沉重,获得任何事情的许可都需要极其漫长的等待时间。由于这些和其他原因,有效地完成任何事情都是不可能的——如果能完成的话——所以我们极其没有生产力。为了看起来很忙,我们都有自己的“装忙工具包”(LBK),这只是一些简短的 Bash 脚本,可以显示一些活动,或者像 tophtopiotop 或任何不断显示一些活动的监控工具之类的程序。这个地方的风气使得真正有生产力变得不可能,我讨厌这个地方,也讨厌几乎无法完成任何有价值的事情这一事实。

那个可怕的地方是真正的系统管理员的噩梦。我们没有人感到快乐。在其他地方一个上午就能完成的事情,在那里需要四到五个月才能完成。我们几乎没有真正的工作要做,但却花费大量时间工作以看起来很忙。我们有一个不成文的竞赛,旨在创建最好的装忙工具包,而我们在那里花费了我们大部分时间。我只设法在那份工作上坚持了几个月,但感觉就像一生。如果你只看那个地牢的表面,你可能会说我们很懒惰,因为我们几乎没有完成任何真正的工作。

这是一个极端的例子,它完全与我说我是一个懒惰的系统管理员以及成为一个懒惰的系统管理员是一件好事的意思相反。

真正的生产力

我很幸运曾为一些真正的管理者工作过——他们是理解系统管理员的生产力不是用每天在键盘上敲击多少小时来衡量的。毕竟,即使是猴子也可以在键盘上敲击,但这并不能表明结果的价值。

正如我在我的书中说的

“我是一个懒惰的系统管理员,但同时我也是一个非常有生产力的系统管理员。这两个看似矛盾的陈述并非相互排斥,而是在非常积极的方面是互补的……



“当系统管理员思考时,效率最高——思考如何解决现有问题以及如何避免未来问题;思考如何监控 Linux 计算机,以便找到预见和预示这些未来问题的线索;思考如何提高他们的工作效率;思考如何自动化所有那些需要每天或每年执行一次的任务。



“系统管理员工作的这种沉思方面对于那些不是系统管理员的人来说并不为人所知或理解——包括许多管理系统管理员的人,即尖头老板。系统管理员都以不同的方式对待他们工作的沉思部分。我认识的一些系统管理员在海滩、骑自行车、参加马拉松或攀岩墙时找到了他们最好的想法。另一些人在安静地坐着或听音乐时思考得最好。还有一些人在阅读小说、学习不相关的学科,甚至在学习更多关于 Linux 的知识时思考得最好。关键是,我们都以不同的方式激发我们的创造力,而许多创造力助推器并不涉及在键盘上敲击一下。对于系统管理员周围的人来说,我们真正的生产力可能是完全不可见的。”

成为懒惰的系统管理员有一些简单的秘诀——这位系统管理员完成了所有需要完成的事情以及更多,同时在其他人惊慌失措地跑来跑去时保持冷静和镇定。其中一部分是高效工作,另一部分是关于从一开始就预防问题。

成为懒惰的系统管理员的方法

思考

我相信关于成为懒惰的系统管理员最重要​​的秘诀是思考。正如上面的摘录中所述,伟大的系统管理员花费大量时间思考我们可以做些什么来更有效地工作,在异常变成问题之前找到异常,并更聪明地工作,同时考虑如何完成所有这些事情以及更多。

例如,现在——除了撰写本文之外——我还在思考一个项目,我打算在新零件从亚马逊和当地电脑商店到达后立即开始。我一台不太重要的计算机上的主板正在变坏,并且最近崩溃得越来越频繁。但是我的非常旧且最小的服务器——处理我的电子邮件和外部网站,以及为我的网络其余部分提供 DHCP 和 DNS 服务的服务器——虽然没有发生故障,但由于各种类型的外部攻击而不得不处理间歇性过载。

我首先想到我只会更换故障单元中的主板及其直接组件——内存、CPU 和可能的电源。但是在思考了一段时间后,我决定应该将新组件放入服务器中,并将服务器中的旧(但仍然可以使用)的组件移动到故障系统中。这将是可行的,并且只需一个小时,或者最多两个小时,即可从服务器中移除旧组件并安装新组件。然后我可以花时间更换故障计算机中的组件。太棒了。所以我开始生成一个心理任务清单来完成这项工作。

但是,当我在处理清单时,我意识到服务器上唯一不会更换的组件是机箱和硬盘驱动器,而两台计算机的机箱几乎相同。在有了这个小小的启示后,我开始考虑用新组件更换故障计算机的组件并使其成为我的服务器。然后,在进行一些测试后,我只需要从我当前的服务器中移除硬盘驱动器并将其安装在装有所有新组件的机箱中,更改几个网络配置项,更改 KVM 切换器端口上的主机名,并更改机箱上的主机名标签,它应该就可以正常工作了。这将产生更少的服务器停机时间,并显着减轻我的压力。此外,如果出现问题,我可以简单地将硬盘驱动器移回原始服务器,直到我可以修复新服务器的问题。

所以现在我已经创建了一个心理任务清单,列出了我需要做的事情来完成这项工作。并且——我希望你一直在密切关注——当我在头脑中解决所有这些问题时,我的手指一次也没有接触过键盘。我的新心理行动计划风险较低,并且与我最初的计划相比,服务器停机时间要少得多。

当我在 IBM 工作时,我过去常常看到到处都是用多种语言写的“思考”标志。思考可以节省时间和压力,并且是懒惰的系统管理员的主要标志。

进行预防性维护

在 1970 年代中期,我被 IBM 聘为客户工程师,我的辖区包括相当多的 单元记录设备。这仅仅意味着它们是主要由机械装置组成的设备,用于处理穿孔卡片——其中一些可以追溯到 1930 年代。由于这些机器主要是机械的,因此它们的零件经常磨损或变得不协调。我的部分工作是在它们坏了的时候修理它们。我的工作的主要部分——最重要的部分——是防止它们首先坏掉。预防性维护旨在在磨损的零件坏掉之前更换它们,并润滑和调整移动组件,以确保它们正常工作。

正如我在《系统管理员的 Linux 哲学》中所说

“我在 IBM 的经理们明白这只是冰山一角;他们——和我——都知道我的工作是客户满意度。虽然这通常意味着修理损坏的硬件,但它也意味着减少硬件损坏的次数。这对客户来说是好事,因为当他们的机器工作时,他们会更有效率。这对我也很好,因为我收到了来自那些更快乐的客户的电话要少得多。由于由此产生的更少的紧急下班后呼叫,我也睡得更多了。我成为了懒惰的[客户工程师]。通过预先做额外的工作,从长远来看我必须做的工作要少得多。



“同样的原则已成为系统管理员 Linux 哲学的功能原则之一。作为系统管理员,我们的时间最好花在那些最大限度地减少未来工作量的事情上。”

在 Linux 计算机中寻找要修复的问题相当于项目管理。我查看系统日志,寻找可能在以后变得关键的问题的提示。如果某些东西看起来有点不对劲,或者我注意到我的工作站或服务器没有按预期响应,或者如果日志显示一些不寻常的东西——所有这些都可能表明存在用户或尖头老板没有注意到的潜在问题。

我经常检查 /var/log/ 中的文件,尤其是 messages 和 security。我更常见的问题之一是许多脚本小子试图对我的防火墙系统进行各种类型的攻击。而且,不,我不依赖我的 ISP 提供的调制解调器/路由器中所谓的防火墙。这些日志包含有关尝试攻击的来源的大量信息,并且可能非常有价值。但是扫描各种主机上的日志并将解决方案落实到位需要大量工作。所以我转向自动化。

自动化

我发现我的很大一部分工作可以通过某种形式的自动化来完成。系统管理员 Linux 哲学的原则之一是“自动化一切”,这包括像每天扫描日志文件这样的枯燥乏味的任务。

Logwatch 这样的程序可以监控你的日志文件中的异常条目,并在它们发生时通知你。Logwatch 通常作为 cron 任务每天运行一次,并向本地主机上的 root 发送电子邮件。你可以从命令行运行 Logwatch,并立即在显示器上查看结果。现在我只需要每天查看 Logwatch 电子邮件通知即可。

但现实是,仅仅获得通知是不够的,因为我们不能一直坐着等待问题。有时需要立即响应。我喜欢的另一个程序,一个为我完成所有工作的程序——看,这就是真正的懒惰管理员——是 Fail2Ban。Fail2Ban 扫描指定的日志文件以查找各种类型的黑客攻击和入侵尝试,如果它看到来自特定 IP 地址的某种特定类型的持续活动足够多,它会在防火墙中添加一个条目,阻止来自该 IP 地址的任何进一步的黑客攻击尝试,持续指定的时间。默认值往往在 10 分钟左右,但我喜欢为大多数类型的攻击指定 12 或 24 小时。每种类型的黑客攻击都是单独配置的,例如那些试图通过 SSH 登录的和那些攻击 Web 服务器的。

编写脚本

自动化是该哲学的关键组成部分之一。一切可以自动化的都应该自动化,其余的也应该尽可能地自动化。所以,我也编写了很多脚本来解决问题,这也意味着我编写脚本来为我完成大部分工作。

我的脚本为我节省了大量时间,因为它们包含执行特定任务的命令,这大大减少了我需要输入的数量。例如,我经常重启我的电子邮件服务器和我的反垃圾邮件软件(当对 SpamAssassin 的 local.cf 文件进行配置更改时需要重启)。这些服务必须按特定顺序停止和重启。所以,我编写了一个包含几个命令的简短脚本,并将其存储在 /usr/local/bin 中,在那里它可以被访问。现在,我只需输入一个三个字符的命令,而无需输入几个命令并等待每个命令完成才能输入下一个命令——更不用说记住正确的命令顺序和每个命令的正确语法——剩下的就交给我的脚本了。

减少打字

成为懒惰的系统管理员的另一种方法是减少我们需要输入的数量。此外,我的打字技巧真的很糟糕(也就是说我根本没有——最多只有几个笨拙的手指)。错误的一个可能原因是我的打字很差,所以我尽量减少打字。

绝大多数 GNU 和 Linux 核心实用程序都有非常短的名称。然而,它们是具有一定含义的名称。像 cd(用于更改目录)、ls(用于列出(目录的内容))和 dd(用于磁盘转储)这样的工具非常明显。短名称意味着更少的打字和更少的错误机会。我认为短名称通常更容易记住。

当我编写 shell 脚本时,我喜欢保持名称简短但有意义(至少对我而言),例如 rsbu 代表 Rsync BackUp。在某些情况下,我喜欢更长的名称,例如 doUpdates 用于执行系统更新。在后一种情况下,较长的名称使脚本的目的显而易见。这节省了时间,因为它很容易记住脚本的名称。

减少打字的其他方法是命令行别名和命令行回忆和编辑。别名只是当你输入命令时由 Bash shell 进行的替换。输入 alias 命令并查看默认配置的别名列表。例如,当你输入命令 ls 时,条目 alias ls='ls –color=auto' 会替换较长的命令,因此你只需要输入两个字符而不是 14 个字符即可获得彩色列表。你也可以使用 alias 命令添加你自己的别名。

命令行回忆允许你使用键盘的向上和向下箭头键滚动浏览你的命令历史记录。如果你需要再次使用相同的命令,你只需在你找到所需的命令时按 Enter 键即可。如果你需要在找到命令后更改命令,你可以使用标准命令行编辑功能进行更改。

结束语

成为懒惰的系统管理员实际上是一项相当多的工作。但我们工作聪明,而不是努力工作。我们花时间探索我们负责的主机,并在小问题变成大问题之前处理任何小问题。我们花大量时间思考解决问题的最佳方法,并且我们花大量时间思考发现更聪明地成为懒惰的系统管理员的新方法。

除了这里描述的少数方法之外,还有许多其他方法可以成为懒惰的系统管理员。我相信你有一些自己的方法;请在评论中与我们其他人分享。

David Both
David Both 是一位开源软件和 GNU/Linux 倡导者、培训师、作家和演讲者。自 1996 年以来,他一直从事 Linux 和开源软件工作,自 1969 年以来一直从事计算机工作。他是“系统管理员 Linux 哲学”的坚定支持者和传播者。

2 条评论

我告诉我的学生,一个好的系统管理员只做三次任务

1) 做一次性快速修复
2) 仔细记录采取的步骤和每个步骤的结果
3) 验证脚本(从 #2 生成)是否有效

我还建议他们永远,永远不要将一项工作视为一次性事件 - 它会重复,在某个时候,在某个地方。

在之前在大学工作的时候,我的一位系统管理员是一位懒惰的系统管理员,他非常棒!

他讨厌做无聊的事情,所以每当他被分配到他觉得无聊的事情时,他都会编写一个脚本来自动化它,这样他就不用再做了。他不介意做这项工作;他只是不想把时间花在做无聊的事情上。

一旦我意识到这就是他在做的事情,我就让他轮流做几项“无聊”的任务(一些很酷的事情,然后是一些无聊的事情,等等)。最终,他自动化了我们大部分的手动任务。有史以来最有价值的员工。是的,他获得了奖励以及我可以从我们的高等教育预算中给出的任何加薪。

如果我所有的系统管理员都像那家伙一样懒惰就好了。

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.