Linux 管理员必须知道些什么?

Linux 管理员必须知道些什么?

我不是系统管理员,但我对 Linux、Unix、Windows 和硬件有深入的了解。

Linux 管理员最需要熟记的主题是什么(能够修复、设置、解决问题而不必阅读手册;检查任何发行版通用的手册页)?

重点我想为此设置的是从公司网络到服务器管理,它们可能具有一些相同的功能,但大多数时候也会有一些不同的功能。例如,您不会总是看到公司服务器的 FTP 服务器,但可能大多数时候会看到 Samba...

我并不是说“你必须读的书”或类似的东西,而是说作为 Linux 管理员在日常生活中可能需要的最重要的功能。

喜欢:

  1. 内核,iptables
  2. Sendmail、Postfix、qmail、exim
  3. Squid、Samba、NFS、LDAP
  4. Apache、ngxix、lighthttpd
  5. vsftpd、proftpd
  6. 绑定
  7. 日常面临的问题
  8. 您一天中最常使用的功能是什么

这不是按顺序排列的列表,也不是最需要的列表。它只是列出了我想到的一些内容。

附言:我已经掌握了基础知识,但我没有现场的日常经验。我曾经拥有服务器,建立了一些网络等等。此外,我甚至对其中的某些部分有深入的了解。我只是想在这里更新一下,就像我说的,这更像是 Linux 系统管理员生活的每日清单。

如果你们可以列出主题并举例说明其中哪个字段是最常用或最值得记忆的,我将不胜感激。

如果您认为我的问题不合适,请告诉我,我会亲自删除它,或者如果您觉得它合适但需要重新加工,也请告诉我,我会尽力。

答案1

你真的确定你关心日常事务吗?我个人认为你应该记住的是当某些东西坏了,每个人都在催你恢复网络时你需要做的事情。日常事务往往会根据你的 Linux 机器在网络上所做的事情而有所不同。

我认为有一些技能非常重要。

  • 您必须能够仅使用 ifconfig、route 和 ip 等 CLI 工具来配置网络。

    • 有几次客户打电话说他们的 Linux 机器坏了。我让他们启动 livecd。但服务器所在的网络没有 DHCP(它是 DHCP)。系统启动后,我需要指导他们启动网络和 SSH,这样我就可以远程连接并帮助他们诊断和修复故障。
    • 您可能无法访问互联网,并且需要知道如何上网。
  • 我认为您应该知道如何使用 tar、rsync 或 dd 对系统进行完整备份。如果您不知道如何备份和恢复,那么您几乎肯定不应该接触系统。您还需要在进行系统更改之前确保进行备份。

  • 我认为您应该知道如何从服务器上的 livecd 访问文件系统。这意味着您应该知道如何激活 LVM 和基于软件 RAID 的驱动器、访问分区信息以及挂载文件系统。

    • 如果您的服务器无法启动,您可能需要访问文件系统并修复某些问题。在紧急情况下,弄清楚如何实际安装东西会非常痛苦。提前做好准备。
  • 您应该对启动过程足够熟悉,以便能够在启动时进行更改。大多数系统使用 GRUB,但您可能会遇到 LILO。
    • 重要的是,知道如何启动到不同的运行级别,例如单用户。
  • 我认为您至少应该具备一些使用 tcpdump 进行一些基本捕获并能够读取结果的实际知识。Wireshark 中所有不错的 GUI 功能都很不错,但如果出现问题,您可能实际上无法访问 Wireshark。
    • 我仅通过运行 tcpdump 就能快速识别和解决大量网络问题。

答案2

了解你拥有哪些工具

你永远不会知道一切提前。但你知道你需要使用什么。你了解的工具越多,你能够使用的工具就越多。如果你知道这个工具是什么、它能做什么以及在哪里可以找到更多关于它的信息,那么这就足够了。

熟悉这些man页面。您不必记住它们,但您应该知道在哪里可以找到您要查找的内容。man这些页面比 Google 更适合查找语法详细信息,因为安装在给定系统上的页面反映了与您正在查看的系统相对应的各种怪癖或特定于版本的信息。

如果您apache经常使用,那么我建议您学习 apache 配置语法。如果您使用nginx其他语言,那么请学习后者。但无论哪种方式,您都应该知道它们是什么以及它们有何不同。

系统工具

无论您从事哪种类型的系统管理员工作,都有一些工具可以为您提供帮助。假设您了解基础知识,例如chmodmount等,以下是一些非常有用的工具,但有些管理员不太了解:

  • 同步
  • sar/iostat(sysstat 包的一部分)
  • 设置/获取(大多数管理员认为 chmod/chown 就是你需要做的全部工作)
  • curl 和/或 wget
  • iptables
  • 谁 / 最后 / w

命令行忍者

我认为对 shell 脚本的扎实理解可以让困难的事情变得快速而简单。如果你必须查找语法,那么你很可能根本不会这样做,所以提前了解是至关重要的。

例如,假设您的目录中全是mysqldump“.sql”文件,每个文件代表一个需要导入到服务器的数据库。您是否手动导入所有 35 个文件?如果您对 shell 脚本相当熟悉,只需输入一个命令然后去喝杯咖啡,这真的很快很容易:

注意:为了便于阅读,我将其分成几行;如果保留分号,则可以将其全部放在一行中。否则,每行末尾不需要分号。

 for FILE in *.sql; do 
   NAME=${FILE%.sql}; 
   mysql -e "create database $NAME"; 
   mysql $NAME < $FILE; 
 done

另外,我建议复习一下使用sed。把它看作是一种在任何地方应用正则表达式的方法。http://www.grymoire.com/Unix/Sed.html

假设您更改了电话号码,并需要相应地更新所有网页(并保存备份以防万一)。

sed -i.bak 's/555-1234/555-4321/' *.html

知道如何正确链接现有工具来做新事情也非常有帮助。假设你需要做与上述相同的事情,但也需要在子目录中搜索——

find public_html -name '*.html' -print0 | xargs -0 sed -i.bak 's/555-1234/555-4321/'

拥有一些使用经验也很有用perl。您可能不需要用它编写任何严肃的程序,但它被设计用来做很多sedawk能做的事情,只是可能更灵活一点。

Perl 可以使用选项来执行命令行魔术-e。使用-p-n-i,您可以快速编写简单的过滤器来执行真正有用的操作。例如,假设您需要查找 9 月份访问“/admin.php”的每个人的 IP 地址:

perl -ne '
  /([^ ]+).*\[..\/Sep\/2010.*\] "GET \/admin.php / and print "$1\n"' < access_log

看到了吗?这还不算太糟。作为系统管理员,你应该知道如何做这些事情。

答案3

我是一名 Windows 管理员,对 Linux 略知一二,因此无法直接回答这个问题。但是,我认为,一旦你掌握了基础知识,无论使用哪种操作系统,管理员需要知道的最重要的一件事就是在哪里如何找到答案。

答案4

有一些事情你绝对需要知道。

您需要很好地了解您的 shell(它如何解析参数,如何扩展通配符,以及棘手的极端情况在哪里)。

您必须能够在未运行 X11 的情况下编辑文件。

您必须能够挂载和卸载文件系统。

您必须具备快速吸收新信息的能力。因为当整个公司的服务器群崩溃并且您只能通过一个微不足道的控制台服务器(即串行端口中的“控制台”)和/或非常慢的 VPN 连接(使任何基于 X11 的东西都变得太痛苦)进行访问时,您就需要这些技能。而且这种情况会发生,所以要做好计划。

相关内容