灵感来自这个问题,我反过来问:系统管理员需要了解多少编程知识?更具体地说,系统管理员需要掌握哪些有用的编程工具?
答案1
- 版本控制。能够生成、读取和应用补丁。知道如何使用版本控制系统来呈现存储库范围内的版本以及为什么需要它。知道如何编写描述性更改日志以及为什么需要它们。知道如何在存储库日志中搜索关键字和时间框架。
- 脚本。做一次,然后按照自己的方式去做。做两次或更多次,做一次然后写一个脚本。
- 调试。了解如何读取堆栈跟踪以及如何向软件支持联系人报告相关错误。找到错误是件好事,也很有帮助,但了解如何修复它需要花费大量时间阅读代码。做你觉得容易的部分,让他们做他们觉得容易的部分。
- 测试. 持续监控并记录错误。与版本控制和测试结合使用,您可以清楚地了解何时可能出现问题以及当时发生了什么变化。监控生产和预生产。
- 同行评审. 提出并审查生产系统的变更。在预生产中进行测试,确定需要做什么,并记录哪些服务可能会受到影响以及影响多长时间。不要让变更管理沦为官僚权力的政治斗争。
- 学习密码学。现代系统管理员负责管理网络资源;将安全性作为最后一步既不可能,又非常昂贵。了解公钥加密、密码处理实践和一般加密将非常有价值。
答案2
我首先要说的是:
- 无论使用哪种语言,如何编写最基本的脚本。自动化是你的朋友。
- 如何运行调试器/知道如何读取某种崩溃报告:它使得找出崩溃报告以及向谁询问变得容易得多。
- 版本控制 - 不仅适用于代码,还适用于任何值得保留历史或变更控制的内容。
答案3
系统管理就是编程。配置管理系统让你将整个基础设施视为一台分布式机器。作为系统管理员,你的工作就是对这台机器进行编程。
了解一个文本编辑器。系统管理员通常使用 vi,程序员使用 emacs。
知道如何编写脚本。选择一种脚本语言。Perl 一直很受欢迎,shell/sed/awk 组合也是如此。Ruby 和 Python 也可以,但对于很多事情来说,对象是错误的范例。
知道如何编写可读的文档。
版本控制。对于维护配置文件和审计跟踪至关重要。
学会用编程术语思考。了解过程式、面向对象和函数式编程范例。这些可能永远不会用到,但了解它们会让你的工作效率无限提高。
学习使用调试器(或更多)和日志记录。
学习使用 RDBMS。许多数据处理需求都可以通过正确使用 RDBMS 来简化。甚至能够根据需要切换到 DBA 角色也可以创造奇迹。
部署前进行测试。了解测试驱动开发理念。
结对编程很好。让别人监督你,以便学习/建议/纠正。
学习至少对多种语言有一定了解。每年学习一门新语言。
答案4
脚本编写必不可少,但我赞同这个建议:了解一些“真正的”语言绝对是一个加分项。例如,您可以使用 .NET System.DirectoryServices 命名空间做一些非常有用的事情。