Linux 管理员必须知道什么?

Pri*_*rix 16 linux

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

Linux 管理员必须牢记的最需要的主题是什么(在无需阅读手册的情况下能够修复、设置和解决问题;检查任何发行版通用的手册页) )?

FOCUS我想为此设置是从公司网络到服务器管理,它们可能具有一些相同的功能,但大多数时候也有一些不同的功能。例如,您不会总是看到公司服务器的 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. 你白天使用最多的功能是什么

这不是有序列表,也不是最需要的。它只是说出了我脑海中浮现的东西。

PS:我已经具备了基础知识,但我没有在该领域的日常经验。我有服务器,建立了一些网络,等等。此外,我什至对其中的某些部分有一些深入的了解。我只是想在这里更新这个,就像我说的,这更像是一份 LINUX 系统管理员生活的每日清单。

如果你们/女孩可以列出主题,例如其中哪个字段最常用或最重要,我将不胜感激。

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

Zor*_*che 19

你真的确定你关心日常的事情吗?就我个人而言,我认为您应该记住的事情是当某些事情发生故障时您需要做的事情,并且每个人都在努力让网络恢复正常。日常事情往往会根据您的 Linux 机器在您的网络上执行的操作而有所不同。

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

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

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

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

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

  • 好点。同样沿着这条线:您应该了解 vi 编辑器的基础知识。无论您使用 joe、pico、emacs 还是 MS Word 进行日常编辑,这些都不会在救援系统中可用,而 vi 是*不同的*;) (10认同)

tyl*_*erl 11

知道你有什么工具

你永远不会提前知道一切。但是你可以知道你必须处理什么。您了解的工具越多,您将能够使用的越多。如果您知道该工具是什么,它的作用是什么,以及在哪里可以找到有关它的更多信息,那么就可以开始了。

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

如果你用apache的很多,那我推荐学习apache的配置语法。如果您使用nginx它,请改为学习它。但无论哪种方式,您都应该知道两者是什么以及它们有何不同。

系统工具

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

  • 同步
  • sar / iostat (sysstat 包的一部分)
  • setfacl / getfacl (大多数管理员认为 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
Run Code Online (Sandbox Code Playgroud)

另外,我建议复习使用sed. 将其视为在任何地方应用正则表达式的一种方式。http://www.grymoire.com/Unix/Sed.html

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

sed -i.bak 's/555-1234/555-4321/' *.html
Run Code Online (Sandbox Code Playgroud)

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

find public_html -name '*.html' -print0 | xargs -0 sed -i.bak 's/555-1234/555-4321/'
Run Code Online (Sandbox Code Playgroud)

有一些使用perl. 您可能不需要编写任何程序严重用它,但它的目的是做了很多的事情,sed并且awk做的,也许只有一点点更灵活。

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

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

看?那还不错。作为系统管理员,您应该知道如何做这些事情。


Joh*_*ers 9

我是一名 Windows 管理员,稍微涉足 Linux,因此无法直接回答问题。但是,在我看来,一旦您对基础知识有了很好的了解,管理员需要知道的一件最重要的事情,无论操作系统如何,就是在哪里以及如何找到答案。