Linux 管理員必須掌握哪些知識?

Linux 管理員必須掌握哪些知識?

我不是系統管理員,但我對 Linux、Unix、Windows 和硬體有很好的了解。

Linux 管理員必須牢記的最需要的主題是什麼(能夠修復、設定、解決問題而無需閱讀最多手冊;檢查任何發行版常見的手冊頁) )?

重點我想對此進行設置,從公司網路到伺服器管理,它們可能具有一些相同的功能,但大多數時候也有一些不同的功能。例如,您不會總是看到公司伺服器的 FTP 伺服器,但大多數時候可能會看到 Samba...

我並不是說「你必須閱讀的書」或類似的話,而是指身為 Linux 管理員在日常生活中可能需要的最必要的功能。

喜歡:

  1. 核心、iptables
  2. Sendmail、Postfix、qmail、exim
  3. 魷魚、Samba、NFS、LDAP
  4. Apache、ngxix、lighthttpd
  5. vsftpd、proftpd
  6. 綁定
  7. 日常面臨的問題
  8. 您一天中使用最多的功能是什麼

這不是按順序排列的列表,也不是最需要的。它只是命名了我腦海中浮現的一些東西。

PS:我已經有了基礎知識,但沒有日常的現場經驗。我有伺服器,建立了一些網絡,等等。而且我甚至對其中的某些部分也有一些深入的了解。我只是想在這裡更新一下,就像我說的,這更像是 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 套件的一部分)
  • setfacl / getfacl(大多數管理員認為 chmod/chown 就是你所需要使用的)
  • 捲曲和/或 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。您可能不需要用它編寫任何嚴肅的程序,但它被設計用來做很多事情,並且sed可以awk做,只是可能更靈活一點。

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 的方式)進行訪問時,這些是您需要的技能痛苦)。這將會發生,所以要做好計劃。

相關內容