
我是FirstVDS系统管理员,这是我短期课程中有关帮助新手同事的第一篇介绍性演讲的文字。 最近开始从事系统管理的专业人员也面临许多相同的问题。 为了提出解决方案,我承诺撰写此系列讲座。 其中的某些内容专门用于托管技术支持,但总的来说,它们可能有用,即使不是对所有人,对许多人也是如此。 因此,我修改了演讲稿的内容以在此处分享。
无论您担任什么职位都没有关系-实际上您在管理中很重要。 因此,让我们从系统管理员应该做的事情开始。 它的主要任务是整理订单,维护订单并为将来的增长做好准备。 没有系统管理员,混乱就开始在服务器上。 没有写入日志,或者写入了错误的日志,没有优化分配资源,磁盘上充满了各种垃圾,并且系统开始从如此混乱的状态中缓慢地弯曲。 冷静点 您所在系统的系统管理员开始解决问题并消除混乱!
系统管理支柱
但是,在开始解决问题之前,有必要了解以下四个主要管理支柱:
- 文献资料
- 模板化
- 最佳化
- 自动化技术
这是基础知识的基础。 如果您不按照这些原则构建工作流,那么它将效率低下,效率低下,并且通常与实际管理不太相似。 让我们分别处理它们。
该文件
文档并不意味着要阅读文档(尽管无处不在),而是要维护文档。
如何保存记录:
- 面对您从未见过的新问题? 写下主要症状,诊断方法和消除原则。
- 您是否针对典型问题提出了新的优雅解决方案? 写下来,这样您就不必在一个月内重新发明它。
- 您是否得到帮助来解决一个您什么都不懂的问题? 写下要点和概念,为自己画一个图。
主要思想:在新的开发和应用中不要完全相信自己的记忆。
执行此操作的格式仅取决于您自己:它可以是带有注释的系统,个人博客,文本文件,物理笔记本。 最主要的是您的记录满足以下要求:
- 不要太长 。 突出显示关键思想,方法和工具。 如果要理解问题需要深入研究Linux内存分配的低级机制,请不要重写您从中学到的文章,而是提供指向它的链接。
- 这些条目对您应该是可以理解的。 如果line
race cond.lockup
不允许您立即了解使用此行描述的内容,请解释。 好的文档不需要半个小时就可以理解。 - 搜索是一个非常好的功能。 如果您是博客,请添加标签; 如果是在物理笔记本中-请在小纸条上贴上说明。 如果您在文档中寻找答案所花的时间与从头开始解决问题所花的时间一样多,那么文档中没有什么意义。

该文档可能是这样的:从原始的记事本条目(如上图),到具有标签,搜索和所有可能的便利功能的完整的多用户知识库(如下)。

您不仅不必两次寻找相同的答案:文档对于学习新主题(笔记!)将有很大的帮助,您的蜘蛛意识也将得到提升(能够一目了然地诊断出棘手的问题的能力)将为您的行动增加组织性。 如果您的同事可以使用该文档,则可以让他们弄清楚当您不在时,您在那里堆积了什么以及如何堆积它们。
模板化
模式化是模式的创建和使用。 要解决大多数典型问题,值得创建一个特定的操作模板。 应该使用标准化的动作顺序来诊断大多数问题。 当您修理/安装/优化了某些物品时,应对照标准化清单检查该物品的性能。
模板是组织工作流程的最佳方法。 使用标准过程来解决最常见的问题,您会得到很多很棒的东西。 例如,使用检查表将使您能够诊断对该操作很重要的所有功能,并放弃对不重要功能的诊断。 标准化的程序将最大程度地减少不必要的抛出,并减少出错的可能性。
第一个重点是程序和检查表也需要记录在案。 如果仅依靠内存,则可以跳过一些非常重要的测试或操作并破坏所有内容。 第二个重点是,如果情况需要,可以并且应该修改所有模板实践。 没有完美且绝对通用的模板。 如果存在问题,但是模板检查没有发现问题,则并不意味着没有问题。 但是,在对一些不太可能的假设问题进行验证之前,应始终首先进行快速模板检查。
最佳化
优化不言而喻。 需要在时间和人力上尽可能优化工作流程。 有无数的选项:学习键盘快捷键,缩写,正则表达式,可用工具。 寻找更实用地使用这些工具的选项。 如果每天调用一次命令100次,则将其挂在键盘快捷键上。 如果您需要定期连接到相同的服务器,请在一个单词中写一个别名,这将使您连接到那里:

查看可用工具的不同选项-也许有一个更方便的终端客户端,DE,剪贴板管理器,浏览器,电子邮件客户端和操作系统。 找出您的同事和熟人使用哪些工具-也许他们出于某种原因选择它们。 拿起工具后,学习如何使用它们:学习按键,缩写,技巧和窍门。
充分利用标准工具-coreutils,vim,正则表达式,bash。 对于最后三个,有大量精彩的手册和文档。 在他们的帮助下,您可以快速从“我感觉像猴子用笔记本电脑修剪坚果的状态–切换为”我是使用笔记本电脑订购核桃饼干的猴子”的状态。
自动化技术
自动化将繁重的工作从疲惫的手中转移到不懈的自动化手中。 如果在相同类型的命令之后执行某些标准过程,那么为什么不将所有这些命令包装在一个文件中,而不调用一个下载并执行该文件的命令呢?
自动化本身包括80%的工具编写和优化自己的工具(另外20%的工具使工具按预期工作)。 它既可以是高级的单行代码,也可以是具有Web界面和API的巨大的万能工具。 这里的主要标准是,创建工具所花费的时间和精力不应超过该工具将为您节省的时间和精力。 如果您编写了五个小时的脚本,而您再也不需要它了,那么如果没有一个脚本就需要一个小时或两个小时才能完成任务,这对工作流程的优化是非常差的。 仅在次数,任务类型和时间允许的情况下,您才可以花五个小时来创建工具,这种情况很少发生。
自动化不一定意味着编写完整的脚本。 例如,要从列表中创建一堆相同类型的对象,一个聪明的单行代码就足以自动执行您将要执行的操作,在窗口之间切换,并带有大量复制粘贴。
实际上,如果您在这四个支柱上构建管理流程,则可以快速提高效率,生产率和资格。 但是,此列表需要再增加一个项目,否则,在IT部门工作几乎是不可能的-自我教育。
系统管理员自我教育
要至少在这方面有能力,您需要不断学习和学习新事物。 如果您丝毫没有遇到未知事物和了解的渴望,那么您很快就会醒来。 各种新的解决方案,技术和方法不断出现在IT中,如果您不至少对其进行肤浅的研究,那么您将迷失方向。 信息技术的许多领域是非常复杂和庞大的。 例如,网络操作。 网络和Internet无处不在,您每天都遇到它们,但是如果您深入研究它们背后的技术,您会发现一门庞大而又非常复杂的学科,对它的研究永远不会在公园里走动。
我没有将此项目包括在列表中,因为它是一般IT的关键,而不仅仅是系统管理的关键。 自然,您将无法一次学习绝对的所有内容-您根本没有足够的身体时间。 因此,在自我教育中,应该记住必要的抽象层次。
您不必立即了解每个实用程序的内部内存管理如何工作以及如何与Linux内存管理交互,但是知道示意性的RAM以及为什么需要它是很不错的。 您不需要知道TCP和UDP标头在结构上如何不同,但是最好了解操作中的主要协议差异。 您无需研究光学中的信号衰减是什么,但是很高兴知道为什么实际损耗总是由节点继承。 知道某些元素在特定抽象级别的工作原理并没有错,并且在根本没有抽象的情况下不必分析绝对所有级别(您会发疯)。
但是,在其领域中以抽象级别进行讨论“这很好,它允许您显示站点”不是很好。 以下讲座将专门概述系统管理员在较低的抽象级别必须处理的主要领域。 我将尝试将所审查的知识量限制在最低的抽象水平。
系统管理的十诫
因此,我们了解了四个主要支柱和基础。 我可以开始解决问题了吗? 还没 在此之前,建议您熟悉所谓的“最佳实践”和良好形式的规则。 没有它们,您可能弊大于利。 因此,让我们开始:
- 我的一些同事认为,首要原则是“不伤害”。 但是我倾向于不同意。 当您尝试不伤害他人时,您将无能为力-太多的动作可能会造成破坏。 我认为最重要的规则是“进行备份” 。 即使您受伤了,也可以随时退后,一切不会那么糟糕。
您需要始终在时间和地点允许的情况下进行备份。 您需要备份要更改的内容以及可能会造成破坏性损失的内容。 建议检查备份中所有必要数据的完整性和可用性。 如果您不需要释放磁盘空间,则在检查完所有内容后不应立即删除备份。 如果空间需要,请备份到您的个人服务器,并在一周内将其删除。 - 第二个最重要的规则(我本人经常打破)是“不要隐藏它” 。 如果您进行了备份,请写上-,以便您的同事不必寻找它。 如果您进行了任何不明显或复杂的操作,请写下:您将回家,但是问题可能会再次发生,或者其他人会遇到问题,并且可以通过关键字找到解决方案。 即使您做一些自己知道的事情,您的同事也可能不知道。
- 无需解释第三条规则: “永远不要做您不知道,不要想象或理解的后果 。 ” 不要从Internet复制命令,如果您不知道它们在做什么,请先呼叫man并进行解析。 如果您不了解它们在做什么,请不要使用现成的解决方案。 最小化混淆代码的执行。 如果没有时间了解,则说明您做错了事,应该阅读下一段。
- “测试一下 。 ” 如果新的脚本,工具,单行代码和命令至少具有最小的破坏性潜力,则应在受控环境中而不是在客户端计算机上进行检查。 即使备份了一切(并且确实做到了),停机也不是最酷的事情。 为此,请获取单独的服务器/虚拟机/ chroot并在此处进行测试。 没坏吗? 然后就可以在“战斗”中运行了。

- “控制 。 ” 尽量减少您无法控制的所有操作。 软件包中的一条依赖性曲线可以将系统的一半拖到后面,并且为yum remove设置的-y标志使您有机会从头开始训练系统恢复技能。 如果该操作没有不可控制的替代方案,请进行下一步并准备好备份。
- “看看 。 ” 检查操作的后果以及是否需要回滚到备份。 检查问题是否真的解决了。 检查错误是否在什么情况下被再现。 验证您可以中断操作。 相信我们的工作是多余的,但绝不能验证。
- “交流 。 ” 如果您不能解决问题,请询问您的同事是否遇到过此类问题。 想要做出有争议的决定-找出同事的意见。 也许他们会提供更好的解决方案。 您对自己的行为没有信心-与同事讨论。 即使这是您的专业领域,重新审视这种情况也可以使您受益匪浅。 不要害羞自己的无知。 最好提出一个愚蠢的问题,看起来像个傻瓜并得到答案,而不要问这个问题,而不是得到答案并保持冷静。
- “不要不合理地拒绝帮助 。 ” 此项目是上一个项目的反面。 如果有人问您一个愚蠢的问题-请澄清并说明。 询问不可能的事情-解释不可能的事情以及为什么,提供替代方案。 如果没有时间(真的没有时间,没有欲望)-说您有一个紧急问题\大量的工作,但是稍后您会弄清楚。 如果您的同事没有紧急任务,请主动与他们联系并委派问题。
- “欢迎反馈 。 ” 一些同事开始采用新技术或新脚本,您是否会遇到此决定的负面后果? 报告此。 也许可以通过三行代码或五分钟的方法论解决问题。 偶然发现软件错误? 报告错误。 如果要复制它,或者不需要复制它,则很可能已将其修复。 大声说出愿望,建议和建设性批评,如果它们似乎相关,请提出问题进行讨论。
- “要求反馈 。 ” 我们和我们的决定一样,都是不完美的,验证我们的决定正确性的最好方法就是提出来进行讨论。 我们对客户进行了一些优化-要求跟踪工作,也许系统的“瓶颈”不在您所需要的地方。 他们写了一个帮助脚本-向您的同事展示,也许他们会找到一种改进方法。
如果您在工作中不断采用这些做法,那么大多数问题将不再是问题:您不仅将自己的错误和缺陷减少到最低限度,而且还将有机会纠正错误(面对备份和将建议您进行备份的同事)。 此外,只有技术细节,如您所知,魔鬼就位于其中。
grep和vim是您50%以上的时间必须使用的主要工具。 有什么会更容易? 文本搜索和文本编辑。 但是,grep和vim是功能强大的多功能多功能工具,可让您有效地搜索和编辑文本。 如果某些Windows记事本允许您简单地写/删除一行,那么在vim中,您几乎可以对文本执行任何操作。 不要相信-从终端调用vimtutor命令并开始学习。 至于grep,它的主要优势在于正则表达式。 是的,该工具本身允许您灵活地设置搜索条件和输出数据,但是没有RegExp则没有太大意义。 而且您需要了解正则表达式! 至少在基本水平上。 首先,我建议您观看此
视频 ,它了解正则表达式的基础知识以及将其与grep结合使用的方法。 哦,是的,当您将它们与vim结合使用时,您会得到
终极动力 具有处理此类文字的功能,您必须使用18个以上的图标将其挂起。
在剩下的50%中,有40%是coreutils。 对于coreutils,您可以在
Wikipedia上查看列表,并在
GNU网站上查看整个列表的手册。
POSIX实用程序中不包含此集合。 不必刻意记住所有按键,但是至少大致了解基本工具可以做什么。 无需重新设计拐杖。 不知何故,我不得不用一些实用程序的输出中的空格替换换行符,患病的大脑催生了
sed ':a;N;$!ba;s/\n/ /g'
的构造,一位接近我的同事用扫帚把我赶走了。从控制台,然后通过编写
tr '\n' ' '
解决了问题。

我建议您记住,每个单独的工具和最常用命令的键都会执行,因为其他所有操作都是人为的。 如有任何疑问,请随时与男人联系。 并且一定要亲自阅读有关人的内容-它包含有关您发现的重要信息。
了解这些工具,您可以有效地解决您在实践中会遇到的大部分任务。 在接下来的讲座中,我们将考虑何时应用这些工具以及应用这些工具的主要服务和应用程序的结构。
FirstVDS系统管理员Kirill Tsvetkov与您同在。