AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 11119
Accepted
Tim
Tim
Asked: 2009-05-22 21:29:31 +0800 CST2009-05-22 21:29:31 +0800 CST 2009-05-22 21:29:31 +0800 CST

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

  • 772
锁定。这个问题及其答案被锁定,因为这个问题离题但具有历史意义。它目前不接受新的答案或交互。

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

untagged
  • 12 12 个回答
  • 6982 Views

12 个回答

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

    我会开始:

    1. 不管是什么语言,如何编写比最基本的脚本更多的东西。自动化是您的朋友。
    2. 如何运行调试器/知道如何阅读某种类型的崩溃报告:它使找出崩溃报告以及向谁询问结果变得容易得多。
    3. 版本控制 - 不仅适用于代码,还适用于任何值得保留历史记录或更改控制的内容。
    • 9
  3. Devdas
    2009-05-22T23:13:41+08:002009-05-22T23:13:41+08:00

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

    知道一种文本编辑器。通常 vi 用于系统管理员,emacs 用于程序员。

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

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

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

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

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

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

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

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

    学会至少对一堆语言有一个短暂的熟悉。每年学习一门新语言。

    • 7
  4. Mei
    2009-06-18T14:33:15+08:002009-06-18T14:33:15+08:00
    • 知道如何编程。 是的,这很重要:正如一位评论者所说,如果你不止一次这样做,那就写一个脚本 - 写好。
    • 了解标准操作系统安装中包含的工具。 对于 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:这将允许您为您的系统构建软件包,从而将它们集成到安装过程中。
    • 5
  5. Maximus Minimus
    2009-05-30T06:14:19+08:002009-05-30T06:14:19+08:00

    脚本是必不可少的,但我认为了解一些“真正的”语言是一个明确的好处。例如,您可以使用 .NET System.DirectoryServices 命名空间做一些非常有用的事情。

    • 3
  6. Tim Post
    2009-06-08T22:49:16+08:002009-06-08T22:49:16+08:00

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

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

    大多数初级管理员可以看着我们的一位程序员并说(有权限),是的,我正确安装了它,这就是你有漏洞的地方,这就是你刚刚推送的代码被破坏的原因。或者“不,它不是我们的 MySQL 版本,请在此处查看您的查询……”

    我认为我们有点不同,当我们聘请一位有天赋的管理员时……我们有一半期望他们(最终)找到自己的编程方式,即使它只是破解我们用来按照他们需要的方式工作的东西.

    总之,全面发展永远不会伤害你。

    • 3
  7. John Rennie
    2009-05-22T23:26:34+08:002009-05-22T23:26:34+08:00

    很多很多年前(实际上是 Windows NT 3.1),我最初是一名程序员,专门编写服务,甚至偶尔会编写设备驱动程序。这意味着您非常了解 Windows 内核。随着时间的推移,我对编程感到有点厌烦,并转向网络管理。我发现我的编程背景一遍又一遍地非常有价值。

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

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

    约翰·雷尼

    • 1
  8. Ronald Pottol
    2009-06-10T17:07:38+08:002009-06-10T17:07:38+08:00

    糟糕的事情发生了,你的代码会比你想象的要长。优雅地失败,并提供有用的错误消息。您将耗尽磁盘、内存、cpu、时间等,处理它。

    不要那么乐观,百万分之一的奇怪问题在生产中会经常发生。

    • 1
  9. fbmario
    2012-06-07T21:15:37+08:002012-06-07T21:15:37+08:00

    有了这里的所有描述,我不会说我是系统管理员。但事实上我构建和管理了几个 windows/linux 服务器,我必须承认一些事情:

    • 在 linux 中,bash 脚本是必须知道的——如果你知道如何将它与 perl/awk/etc 集成,那就更好了。我发现使用它让许多任务变得更容易。

    • 知道用 C/C++ 编程有很大帮​​助。有时您必须修改 GNU 源代码(如果您使用源代码)以满足您的需要,因为成为 GNU 产品并不能确保您总是能及时获得所需的帮助——而且很多时候它们是用 C/C++ 编写的。

    • 1
  10. Shial
    2009-06-18T15:54:59+08:002009-06-18T15:54:59+08:00
    • SQL - 一切都适用于数据库
    • 编程——语言无所谓,只要你理解逻辑和过程,你就可以学习和适应任何语言。
    • 如何记录代码和更改 - 这个是巨大的。有多少次你被困在一个配置中,试图弄清楚为什么有人这样做,如果我们把它改回来会有什么影响。这超出了您编写的任何代码或脚本,当您在星期二下午下雨时用户 X 收到来自域 Y 的电子邮件时,当您更改防火墙设置以处理边缘情况时,这将涵盖。可能不是你,可能是 PFY 决定继续做这件事,然后在你假期的凌晨 2 点打电话给你,因为一切都以一种可怕的方式发生了。
    • 系统语言——在 Windows 上,这就是 Powershell 和 WMI 之类的东西,它们可以让你的脚本语言绑定到一些非常强大的资源并在 PC 上做任何事情。Unix/Linux 有它们自己的工具集,我没有资格谈论它们。
    • 0

相关问题

  • 如何面试系统管理员候选人?[关闭]

  • 必须为 IT 架构师提供软件 [关闭]

  • 您订阅了哪些博客或 RSS 站点以跟上当前的技术?

  • 一份好的系统管理员简历是什么样的?[关闭]

  • 谁拥有最好的在线准备 MCSE 学习材料?[关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve