Linux 常見面試題

Linux 概述

什麼是Linux?
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡爲核心的設計思想,是一個性能穩定的多用戶網絡操作系統。

Unix和Linux有什麼區別?
Linux和Unix都是功能強大的操作系統,都是應用廣泛的服務器操作系統,有很多相似之處,甚至有一部分人錯誤地認爲Unix和Linux操作系統是一樣的,然而,事實並非如此,以下是兩者的區別。

開源性
Linux是一款開源操作系統,不需要付費,即可使用;Unix是一款對源碼實行知識產權保護的傳統商業軟件,使用需要付費授權使用。

跨平臺性
Linux操作系統具有良好的跨平臺性能,可運行在多種硬件平臺上;Unix操作系統跨平臺性能較弱,大多需與硬件配套使用。

可視化界面
Linux除了進行命令行操作,還有窗體管理系統;Unix只是命令行下的系統。

硬件環境
Linux操作系統對硬件的要求較低,安裝方法更易掌握;Unix對硬件要求比較苛刻,按照難度較大。

用戶羣體
Linux的用戶羣體很廣泛,個人和企業均可使用;Unix的用戶羣體比較窄,多是安全性要求高的大型企業使用,如銀行、電信部門等,或者Unix硬件廠商使用,如Sun等。
相比於Unix操作系統,Linux操作系統更受廣大計算機愛好者的喜愛,主要原因是Linux操作系統具有Unix操作系統的全部功能,並且能夠在普通PC計算機上實現全部的Unix特性,開源免費的特性,更容易普及使用!

什麼是 Linux 內核?
Linux 系統的核心是內核。內核控制着計算機系統上的所有硬件和軟件,在必要時分配硬件,並根據需要執行軟件。

系統內存管理
應用程序管理
硬件設備管理
文件系統管理
Linux的基本組件是什麼?
就像任何其他典型的操作系統一樣,Linux擁有所有這些組件:內核,shell和GUI,系統實用程序和應用程序。Linux比其他操作系統更具優勢的是每個方面都附帶其他功能,所有代碼都可以免費下載。
Linux 的體系結構
從大的方面講,Linux 體系結構可以分爲兩塊:

在這裏插入圖片描述

  • 用戶空間(User Space) :用戶空間又包括用戶的應用程序(User Applications)、C 庫(C Library) 。

  • 內核空間(Kernel Space) :內核空間又包括系統調用接口(System Call
    Interface)、內核(Kernel)、平臺架構相關的代碼(Architecture-Dependent Kernel Code) 。

爲什麼 Linux 體系結構要分爲用戶空間和內核空間的原因?

  • 1、現代 CPU 實現了不同的工作模式,不同模式下 CPU 可以執行的指令和訪問的寄存器不同。
  • 2、Linux 從 CPU 的角度出發,爲了保護內核的安全,把系統分成了兩部分。

用戶空間和內核空間是程序執行的兩種不同的狀態,我們可以通過兩種方式完成用戶空間到內核空間的轉移:1)系統調用;2)硬件中斷。
BASH和DOS之間的基本區別是什麼?
BASH和DOS控制檯之間的主要區別在於3個方面:

  • BASH命令區分大小寫,而DOS命令則不區分;
  • 在BASH下,/ character是目錄分隔符,\作爲轉義字符。在DOS下,/用作命令參數分隔符,\是目錄分隔符
  • DOS遵循命名文件中的約定,即8個字符的文件名後跟一個點,擴展名爲3個字符。BASH沒有遵循這樣的慣例。

Linux 開機啓動過程?
1、主機加電自檢,加載 BIOS 硬件信息。
2、讀取 MBR 的引導文件(GRUB、LILO)。
3、引導 Linux 內核。
4、運行第一個進程 init (進程號永遠爲 1 )。
5、進入相應的運行級別。
6、運行終端,輸入用戶名和密碼。

Linux系統缺省的運行級別?
1.關機。
2.單機用戶模式。
3.字符界面的多用戶模式(不支持網絡)。
4.字符界面的多用戶模式。
5.未分配使用。
6.圖形界面的多用戶模式。
7.重啓。

Linux 使用的進程間通信方式?
1、管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。
2、信號(signal) 。
3、消息隊列。
4、共享內存。
5、信號量。
6、套接字(socket) 。

Linux 有哪些系統日誌文件?
比較重要的是 /var/log/messages 日誌文件。

Linux系統安裝多個桌面環境有幫助嗎?
通常,一個桌面環境,如KDE或Gnome,足以在沒有問題的情況下運行。儘管系統允許從一個環境切換到另一個環境,但這對用戶來說都是優先考慮的問題。有些程序在一個環境中工作而在另一個環境中無法工作,因此它也可以被視爲選擇使用哪個環境的一個因素。

什麼是交換空間?
交換空間是Linux使用的一定空間,用於臨時保存一些併發運行的程序。當RAM沒有足夠的內存來容納正在執行的所有程序時,就會發生這種情況。

什麼是root帳戶
root帳戶就像一個系統管理員帳戶,允許你完全控制系統。你可以在此處創建和維護用戶帳戶,爲每個帳戶分配不同的權限。每次安裝Linux時都是默認帳戶。

什麼是LILO?
LILO是Linux的引導加載程序。它主要用於將Linux操作系統加載到主內存中,以便它可以開始運行。

什麼是BASH?
BASH是Bourne Again SHell的縮寫。它由Steve Bourne編寫,作爲原始Bourne Shell(由/ bin / sh表示)的替代品。它結合了原始版本的Bourne Shell的所有功能,以及其他功能,使其更容易使用。從那以後,它已被改編爲運行Linux的大多數系統的默認shell。

什麼是CLI?
命令行界面(英語**:command-line interface**,縮寫]:CLI)是在圖形用戶界面得到普及之前使用最爲廣泛的用戶界面,它通常不支持鼠標,用戶通過鍵盤輸入指令,計算機接收到指令後,予以執行。也有人稱之爲字符用戶界面(CUI)。
通常認爲,命令行界面(CLI)沒有圖形用戶界面(GUI)那麼方便用戶操作。因爲,命令行界面的軟件通常需要用戶記憶操作的命令,但是,由於其本身的特點,命令行界面要較圖形用戶界面節約計算機系統的資源。在熟記命令的前提下,使用命令行界面往往要較使用圖形用戶界面的操作速度要快。所以,圖形用戶界面的操作系統中,都保留着可選的命令行界面。

什麼是GUI?
圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)是指採用圖形方式顯示的計算機操作用戶界面。
圖形用戶界面是一種人與計算機通信的界面顯示格式,允許用戶使用鼠標等輸入設備操縱屏幕上的圖標或菜單選項,以選擇命令、調用文件、啓動程序或執行其它一些日常任務。與通過鍵盤輸入文本或字符命令來完成例行任務的字符界面相比,圖形用戶界面有許多優點。

開源的優勢是什麼?
開源允許你將軟件(包括源代碼)免費分發給任何感興趣的人。然後,人們可以添加功能,甚至可以調試和更正源代碼中的錯誤。它們甚至可以讓它運行得更好,然後再次自由地重新分配這些增強的源代碼。這最終使社區中的每個人受益。

GNU項目的重要性是什麼?
這種所謂的自由軟件運動具有多種優勢,例如可以自由地運行程序以及根據你的需要自由學習和修改程序。它還允許你將軟件副本重新分發給其他人,以及自由改進軟件並將其發佈給公衆。

磁盤、目錄、文件

簡單 Linux 文件系統?
在 Linux 操作系統中,所有被操作系統管理的資源,例如網絡接口卡、磁盤驅動器、打印機、輸入輸出設備、普通文件或是目錄都被看作是一個文件。

也就是說在 Linux 系統中有一個重要的概念**:一切都是文件**。其實這是 Unix 哲學的一個體現,而 Linux 是重寫 Unix 而來,所以這個概念也就傳承了下來。在 Unix 系統中,把一切資源都看作是文件,包括硬件設備。UNIX系統把每個硬件都看成是一個文件,通常稱爲設備文件,這樣用戶就可以用讀寫文件的方式實現對硬件的訪問。
Linux 支持 5 種文件類型,如下圖所示:
在這裏插入圖片描述
什麼是 inode ?
理解inode,要從文件儲存說起。

文件儲存在硬盤上,硬盤的最小存儲單位叫做"扇區"(Sector)。每個扇區儲存512字節(相當於0.5KB)。

操作系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最常見的是4KB,即連續八個 sector組成一個 block。

文件數據都儲存在"塊"中,那麼很顯然,我們還必須找到一個地方儲存文件的元信息,比如文件的創建者、文件的創建日期、文件的大小等等。這種儲存文件元信息的區域就叫做inode,中文譯名爲"索引節點"。

每一個文件都有對應的inode,裏面包含了與該文件有關的一些信息。

簡述 Linux 文件系統通過 i 節點把文件的邏輯結構和物理結構轉換的工作過程?
Linux 通過 inode 節點表將文件的邏輯結構和物理結構進行轉換。

inode 節點是一個 64 字節長的表,表中包含了文件的相關信息,其中有文件的大小、文件所有者、文件的存取許可方式以及文件的類型等重要信息。在 inode 節點表中最重要的內容是磁盤地址表。在磁盤地址表中有 13 個塊號,文件將以塊號在磁盤地址表中出現的順序依次讀取相應的塊。
Linux 文件系統通過把 inode 節點和文件名進行連接,當需要讀取該文件時,文件系統在當前目錄表中查找該文件名對應的項,由此得到該文件相對應的 inode 節點號,通過該 inode 節點的磁盤地址表把分散存放的文件物理塊連接成文件的邏輯結構。

什麼是硬鏈接和軟鏈接?
1)硬鏈接

由於 Linux 下的文件是通過索引節點(inode)來識別文件,硬鏈接可以認爲是一個指針,指向文件索引節點的指針,系統並不爲它重新分配 inode 。每添加一個一個硬鏈接,文件的鏈接數就加 1 。

不足:1)不可以在不同文件系統的文件間建立鏈接;2)只有超級用戶纔可以爲目錄創建硬鏈接。
2)軟鏈接

軟鏈接克服了硬鏈接的不足,沒有任何文件系統的限制,任何用戶可以創建指向目錄的符號鏈接。因而現在更爲廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網絡對文件進行鏈接。

不足:因爲鏈接文件包含有原文件的路徑信息,所以當原文件從一個目錄下移到其他目錄中,再訪問鏈接文件,系統就找不到了,而硬鏈接就沒有這個缺陷,你想怎麼移就怎麼移;還有它要系統分配額外的空間用於建立新的索引節點和保存原文件的路徑。
實際場景下,基本是使用軟鏈接。總結區別如下:

硬鏈接不可以跨分區,軟件鏈可以跨分區。
硬鏈接指向一個 inode 節點,而軟鏈接則是創建一個新的 inode 節點。
刪除硬鏈接文件,不會刪除原文件,刪除軟鏈接文件,會把原文件刪除。

RAID 是什麼?
RAID 全稱爲獨立磁盤冗餘陣列(Redundant Array of Independent Disks),基本思想就是把多個相對便宜的硬盤組合起來,成爲一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、 容量巨大的硬盤。RAID 通常被用在服務器電腦上,使用完全相同的硬盤組成一個邏輯扇區,因此操作系統只會把它當做一個硬盤。

RAID 分爲不同的等級,各個不同的等級均在數據可靠性及讀寫性能上做了不同的權衡。在實際應用中,可以依據自己的實際需求選擇不同的 RAID 方案。

當然,因爲很多公司都使用雲服務,大家很難接觸到 RAID 這個概念,更多的可能是普通雲盤、SSD 雲盤醬紫的概念。

安全

一臺 Linux 系統初始化環境後需要做一些什麼安全工作?
1、添加普通用戶登陸,禁止 root 用戶登陸,更改 SSH 端口號。

2、服務器使用密鑰登陸,禁止密碼登陸。

3、開啓防火牆,關閉 SElinux ,根據業務需求設置相應的防火牆規則。

4、裝 fail2ban 這種防止 SSH 暴力破擊的軟件。

5、設置只允許公司辦公網出口 IP 能登陸服務器(看公司實際需要)

也可以安裝 VPN 等軟件,只允許連接 VPN 到服務器上。

6、修改歷史命令記錄的條數爲 10 條。

7、只允許有需要的服務器可以訪問外網,其它全部禁止。

8、做好軟件層面的防護。

8.1 設置 nginx_waf 模塊防止 SQL 注入。
8.2 把 Web 服務使用 www 用戶啓動,更改網站目錄的所有者和所屬組爲 www 。

什麼叫 CC 攻擊?什麼叫 DDOS 攻擊?
CC 攻擊,主要是用來攻擊頁面的,模擬多個用戶不停的對你的頁面進行訪問,從而使你的系統資源消耗殆盡。

DDOS 攻擊,中文名叫分佈式拒絕服務攻擊,指藉助服務器技術將多個計算機聯合起來作爲攻擊平臺,來對一個或多個目標發動 DDOS 攻擊。
DDOS攻擊,即是通過大量合法的請求佔用大量網絡資源,以達到癱瘓網絡的目的。

怎麼預防 CC 攻擊和 DDOS 攻擊?

防 CC、DDOS 攻擊,這些只能是用硬件防火牆做流量清洗,將攻擊流量引入黑洞。
流量清洗這一塊,主要是買 ISP 服務商的防攻擊的服務就可以,機房一般有空餘流量,我們一般是買服務,畢竟攻擊不會是持續長時間。

什麼是網站數據庫注入?

由於程序員的水平及經驗參差不齊,大部分程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷。
應用程序存在安全隱患。用戶可以提交一段數據庫查詢代碼,根據程序返回的結果,獲得某些他想得知的數據,這就是所謂的 SQL 注入。
SQL注入,是從正常的 WWW 端口訪問,而且表面看起來跟一般的 Web 頁面訪問沒什麼區別,如果管理員沒查看日誌的習慣,可能被入侵很長時間都不會發覺。

Shell 腳本是什麼?
一個 Shell 腳本是一個文本文件,包含一個或多個命令。作爲系統管理員,我們經常需要使用多個命令來完成一項任務,我們可以添加這些所有命令在一個文本文件(Shell 腳本)來完成這些日常工作任務。

Shell腳本中 $? 標記的用途是什麼?

在寫一個 Shell 腳本時,如果你想要檢查前一命令是否執行成功,在 if 條件中使用 $? 可以來檢查前一命令的結束狀態。

如何選擇 Linux 操作系統版本?
一般來講,桌面用戶首選 Ubuntu ;服務器首選 RHEL 或 CentOS ,兩者中首選 CentOS 。

根據具體要求:

安全性要求較高,則選擇 Debian 或者 FreeBSD 。

需要使用數據庫高級服務和電子郵件網絡應用的用戶可以選擇 SUSE 。

想要新技術新功能可以選擇 Feddora ,Feddora 是 RHEL 和 CentOS 的一個測試版和預發佈版本。

【重點】根據現有狀況,絕大多數互聯網公司選擇 CentOS 。現在比較常用的是 6 系列,現在市場佔有大概一半左右。另外的原因是 CentOS 更側重服務器領域,並且無版權約束。

如何規劃一臺 Linux 主機,步驟是怎樣?
1、確定機器是做什麼用的,比如是做 WEB 、DB、還是遊戲服務器。

不同的用途,機器的配置會有所不同。

2、確定好之後,就要定系統需要怎麼安裝,默認安裝哪些系統、分區怎麼做。

3、需要優化系統的哪些參數,需要創建哪些用戶等等的。

Linux 性能調優都有哪幾種方法?

1、Disabling daemons (關閉 daemons)。
2、Shutting down the GUI (關閉 GUI)。
3、Changing kernel parameters (改變內核參數)。
4、Kernel parameters (內核參數)。
5、Tuning the processor subsystem (處理器子系統調優)。
6、Tuning the memory subsystem (內存子系統調優)。
7、Tuning the file system (文件系統子系統調優)。
8、Tuning the network subsystem(網絡子系統調優)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章