每个系统管理员都应该知道哪些程序员知识?

Tim*_*Tim 20 untagged

受到这个问题的启发,我反过来问:系统管理员需要了解多少编程知识?更具体地说,系统管理员拥有哪些编程工具是有用的?

jld*_*ger 29

  • 版本控制。能够生成、读取和应用补丁。了解如何使用版本控制系统来呈现存储库范围内的版本以及您为什么想要一个版本。知道如何编写描述性的变更日志以及为什么需要它们。了解如何在存储库日志中搜索关键字和时间范围。
  • 脚本。做一次,然后上路。做两次或更多次,做一次然后写一个脚本。
  • 调试。了解如何读取堆栈跟踪以及如何向您的软件支持联系人报告相关错误。发现错误很好而且很有帮助,但知道如何修复它可能需要大量投资来阅读代码。做对你来说容易的部分,让他们做对他们来说容易的部分。
  • 测试。持续监控并记录错误。与版本控制和测试结合使用,您可以清楚地知道什么时候可能出错以及当时发生了什么变化。监控生产和预生产。
  • 同行评审。提出并审查生产系统的变更。对预生产进行测试,准确确定需要完成的工作,并记录哪些服务可能会受到影响多长时间。不要让变革管理退化为官僚权力的政治斗争。
  • 学习密码学。现代系统管理员负责网络资源;作为最后一步添加安全性介于不可能和非常昂贵的提议之间。了解公钥密码学、密码处理实践和一般加密将非常有价值。


Che*_*ion 9

我会从:

  1. 无论使用哪种语言,如何编写比最基本的脚本更多的脚本。自动化是您的朋友。
  2. 如何运行调试器/知道如何阅读某种崩溃报告:它使找出崩溃报告以及向谁提问更容易。
  3. 版本控制 - 不仅适用于代码,还适用于任何值得保留历史记录或更改控制的内容。


小智 7

系统管理只是编程。配置管理系统可让您将整个基础架构视为分布式机器。作为系统管理员,您的工作是对这台机器进行编程。

了解一种文本编辑器。通常系统管理员使用 vi,程序员使用 emacs。

知道如何编写脚本。选择一种脚本语言。Perl 一直是最受欢迎的,shell/sed/awk 组合也是如此。Ruby 和 Python 可以工作,但在很多情况下,对象是错误的范例。

知道如何编写可读的文档。

版本控制。对于维护配置文件和审计跟踪至关重要。

学会用编程术语思考。了解过程式、面向对象和函数式编程范式。这些可能永远不会被使用,但了解它们会让你无限地提高生产力。

学习使用调试器(或更多)和日志记录。

学习使用 RDBMS。有大量的数据处理需求可以通过正确使用 RDBMS 来简化。即使能够按需切换到 DBA 角色也能创造奇迹。

部署前测试。请参阅测试驱动的开发理念。

结对编程很好。让其他人照看您的肩膀以学习/建议/纠正。

学习至少对一堆语言有一定的熟悉度。每年学习一门新语言。


Mei*_*Mei 5

  • 知道如何编程。 是的,这很重要:正如一位评论者所说,如果你做不止一次,那就写一个脚本——而且写得好。
  • 了解标准操作系统安装中包含的工具。 对于 UNIX 管理员来说,这意味着 Korn Shell (ksh) 以及 Perl 和 vi 等工具。不要依赖 Emacs 或 Ruby 或 Tcl 或 C shell。
  • 了解网络。以太网数据包是如何组合在一起的?数据包是什么样子的?有哪些不同的数据包类型?了解 tcpdump、wireshark、snoop 等工具。
  • 编写可移植的代码。 如果代码要在 Linux 和 Tru64 以及 Solaris 和 OpenVMS 下运行,那么编写可移植的代码。即使它只能在两个版本的 UNIX 下运行 - 使其可移植。但是,如果它不需要便携,就不要在它上面花费额外的时间。
  • 知道文档在哪里。对于 Perl,这意味着 perldoc、Perl Mongers、perl.org 等。对于 ksh,这意味着手册页和您最喜欢的 Korn shell 书籍。
  • 文件,文件,文件,文件!记录您的代码、创建手册页、创建内联 Perl 文档以及任何其他合适的内容。解释如何使用该程序以及您为何以这种方式对其进行编码。
  • 了解您系统的打包工具。了解如何为 Red Hat、HP-UX 软件仓库或 Solaris 软件包创建 RPM:这将允许您为系统构建软件包,从而将它们集成到安装过程中。