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


20

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


1
这不应该是一个SO问题。我认为反正已经有人问过了。
添马修斯


2
是的,但是正如该问题所指出的,SF和SO上存在两个非常独立的社区。我认为查看系统管理员认为系统管理员应该了解哪些程序员的知识,而不是查看程序员认为系统管理员应该了解哪些程序员的知识,是很有趣的。

Answers:


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

即使无法编写脚本(或编写良好脚本),能够识别何时自动执行某些操作也非常重要。
以太

对于纯Windows商店,什么是快速便捷的版本控制系统?
jftuga 2011年

SVN?我的意思是,对于这个白痴来说似乎足够好了:codinghorror.com/blog/2008/04/…– jldugger 2011
6

9

我将从以下内容开始:

  1. 无论哪种语言,如何编写比最基本的脚本还要多的文字。自动化是您的朋友。
  2. 如何运行调试器/知道如何读取某种崩溃报告:这使弄清崩溃报告以及由谁来问出什么诱因变得容易得多。
  3. 版本控制-不仅用于代码,还用于任何值得保留历史记录或更改控制权的内容。

7

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

认识一个文本编辑器。通常,vi用于系统管理员,emacs用于程序员。

知道如何编写脚本。选择一种脚本语言。Perl是常年收藏,外壳/ sed / awk组合也是。Ruby和Python可以工作,但是在很多方面,对象是错误的范例。

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

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

学习用编程术语思考。了解过程,面向对象和功能编程范例。这些可能永远不会被使用,但是了解它们可以使您的工作效率无限提高。

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

学习使用RDBMS。通过正确使用RDBMS可以简化许多数据处理要求。甚至能够按需切换到DBA角色也可以创造奇迹。

部署前进行测试。请参见测试驱动的开发哲学。

结对编程很好。让别人看着你的肩膀学习/建议/纠正。

学会至少熟悉一门语言。每年学习一门新语言。


回到现实世界中……我还没有见过执行此操作的系统管理员(除了测试和编写一些文档)。也许我为错误的公司工作!
PowerApp101,2009年

1
然后,您对现实的看法糟透了。我的每个工人都喜欢vi(我学过emacs,不想两次遭受酷刑);我们有数百个perl脚本和十二个一次性php网站用于支持目的。我们运行Opsview / nagios进行监视,实际上这只是连续进行某种形式的测试-提交更改后即刻获得反馈。尽管如此,我还是想对网站和脚本进行更多的版本控制,并提供更好的审核记录。
jldugger

你们是Unix管理员吗?在Windows世界中,很多东西尚未渗透到系统管理员的意识中。相信我,如果愿意的话,我会喜欢的。
PowerApp101

20世纪的男孩,我们踢了Windows管理员来学习这些知识。他们还没有,但是比我加入时要好。我们现在面临的更大问题是政治/管理问题,而不是我们遇到的技术问题。
Devdas,2009年

哦,我们也有Windows开发人员提供线索,因此他们实际上支持这种努力。
Devdas,2009年

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:这将使您能够为系统构建软件包,并将其集成到安装过程中。


3

我是一名程序员和高级管理员/集成商。要在我的工作地点工作,您需要了解以下几点:

  • 如何编写shell脚本(POSIX,没有Bashisms),一些Perl,一些Python
  • 基本C(单一UNIX规范)
  • 如何安装编译器工具链
  • 如何从源代码构建库和其他OSS项目
  • 什么是Valgrind以及如何使用它来发现内存泄漏
  • 如何滚动.rpm和.deb软件包
  • 虽然我们不需要它,但是一点点PHP和一点LISP也不会造成伤害

大多数初级管理员可以看一下我们的一位程序员,(有权限)说,是的,我安装正确,这是您泄漏的地方,这就是您刚推送的代码中断的原因。或“不,它不是我们的MySQL版本,请在此处查看您的查询...”

我认为我们有所不同,当我们聘请有天赋的管理员时..我们半途而终地期望他们(最终)找到他们的编程方式,即使这只是黑客入侵我们用来工作的东西,也就是他们需要的工作方式。

总而言之,全面发展永远不会伤害您。


1

许多很多年前(实际上是Windows NT 3.1),我最初是一名专门从事编写服务甚至是偶尔的设备驱动程序的程序员。这意味着您会非常了解Windows内核。随着时间的流逝,我对编程有些无聊,并转而使用网络管理。我发现我的编程背景一遍又一遍地具有很高的价值。

不仅仅是编写VBScript脚本相对容易。了解Windows的工作原理,尤其是IP的工作原理,将有助于解决奇怪的服务器和网络问题。这也是一种心态。程序员习惯于进行文档编制和版本控制,这让我感到震惊,我看到有多少Windows管理员会尝试尝试某些方法以查看其是否有效,并担心以后再搞乱。

很好,但是说离开程序员并从事十年的工作并不是非常有用的建议!但是我认为这将帮助大多数系统管理员具有使用“硬”语言(例如C ++或C#)进行编程的经验。而且,如果您的组织中有驯服的程序员,那就和他们一起喝酒吧!

约翰·雷尼


1

糟糕的事情发生了,您的代码将比您认为的更长。正常失败,并显示有用的错误消息。您将用光磁盘,内存,CPU,时间等,然后对其进行处理。

不要过于乐观,以至于百万分之一的问题在生产中经常发生。


1

有了这里的所有描述,我不会再说我是系统管理员。但是事实上,我构建并管理了几个Windows / Linux服务器,所以我必须承认:

  • 在Linux中,必须了解bash脚本-如果您知道如何将其与perl / awk / etc集成,那就更好了。我发现通过使用它,许多任务变得更加容易。

  • 知道使用C / C ++编程会很有帮助。有时,您必须修改GNU源代码(如果使用的话)以适合您的需求,因为成为GNU产品并不能确保您始终能按时获得所需的帮助,而且很多时候它们都是用C / C ++编写的。


0
  • SQL-一切适用于数据库
  • 编程-语言无关紧要,只要您了解可以学习并适应任何语言的逻辑和过程即可。
  • 如何记录代码和更改-这是巨大的。您被困在多少次配置上,试图弄清楚为什么有人这么做了,如果我们将其改回原样,将会影响什么。这一内容超出了您编写的代码或脚本的范围,这涵盖了您更改防火墙设置以处理边缘情况的情况,当用户X在周二下午下雨时从X域接收到来自Y域的电子邮件。可能不是您,可能是PFY决定继续这样做,然后必须在假期的凌晨2点打电话给您,因为一切都以可怕的方式破裂了。
  • 系统语言-在Windows上,这是Powershell和WMI之类的东西,它们使脚本语言可以绑定到一些非常强大的资源中,并且可以在PC上执行任何操作。Unix / Linux有自己的一套工具,我没有资格讲。

0

知道如何绑定到LDAP并以您选择的脚本语言检索所需的信息,这对于从故障排除到真正加强各种类型的自动化(帐户和资源配置,对用户或计算机帐户的更智能检查)的所有事情都很关键。

可能看起来很基础,但是我见过很多面包店,那里的人们认为他们不需要这种系统管理。据我所知,很多地方在大量管理工具上花费了大量资金,据我所知,如果有人知道或不知道如何使用这些工具,那么他们使用工具的95%可能需要花费几个小时的脚本来完成。做吧。


0

我发现,了解bash,dos batch和powershell脚本为系统管理员提供了在任何流行的系统上都能执行任何操作的框架。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.