100道Linux 常見面試題,建議收藏,慢慢讀~

100道Linux 常見面試題,建議收藏,慢慢讀~

本文共 2W+字,分別從 Linux 概述、磁碟、目錄、檔案、安全、語法級、實戰、檔案管理命令、文件編輯命令、磁碟管理命令、網路通訊命令、系統管理命令、備份壓縮命令等方面拆解 Linux 常見面試問題。可以先收藏,慢慢讀。

1

Linux 概述

1.1

什麼是 Linux

Linux 是一套免費使用和自由傳播的類 Unix 作業系統,是一個基於 POSIX 和 Unix 的多使用者、多工、支援多執行緒和多 CPU 的作業系統。它能執行主要的 Unix 工具軟體、應用程式和網路協議。它支援 32 位和 64 位硬體。Linux 繼承了 Unix 以網路為核心的設計思想,是一個性能穩定的多使用者網路作業系統。

1.2

Unix 和 Linux 有什麼區別?

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

開源性 Linux 是一款開源作業系統,不需要付費,即可使用;Unix 是一款對原始碼實行智慧財產權保護的傳統商業軟體,使用需要付費授權使用。

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

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

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

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

1.3

什麼是 Linux 核心?

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

系統記憶體管理

應用程式管理

硬體裝置管理

檔案系統管理

1.4

Linux 的基本元件是什麼?

就像任何其他典型的作業系統一樣,Linux 擁有所有這些元件:核心,shell 和 GUI,系統實用程式和應用程式。Linux 比其他作業系統更具優勢的是每個方面都附帶其他功能,所有程式碼都可以免費下載。

1.5

Linux 的體系結構

從大的方面講,Linux 體系結構可以分為兩塊:

100道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)硬體中斷。

1.6

BASH 和 DOS 之間的基本區別是什麼?

BASH 和 DOS 控制檯之間的主要區別在於 3 個方面:

BASH 命令區分大小寫,而 DOS 命令則不區分;

在 BASH 下,/ character 是目錄分隔符,\作為跳脫字元。在 DOS 下,/用作命令引數分隔符,\是目錄分隔符

OS 遵循命名檔案中的約定,即 8 個字元的檔名後跟一個點,副檔名為 3 個字元。BASH 沒有遵循這樣的慣例。

1.7

Linux 開機啟動過程?

主機加電自檢,載入 BIOS 硬體資訊。

讀取 MBR 的引導檔案(GRUB、LILO)。

引導 Linux 核心。

執行第一個程序 init (程序號永遠為 1 )。

進入相應的執行級別。

執行終端,輸入使用者名稱和密碼。

1.8

Linux 系統預設的執行級別?

關機。

單機使用者模式。

字元介面的多使用者模式(不支援網路)。

字元介面的多使用者模式。

未分配使用。

圖形介面的多使用者模式。

重啟。

1.9

Linux 使用的程序間通訊方式?

管道(pipe)、流管道(s_pipe)、有名管道(FIFO)

訊號(signal)

訊息佇列

共享記憶體

訊號量

套接字(socket)

1.10

Linux 有哪些系統日誌檔案?

比較重要的是 /var/log/messages 日誌檔案。

該日誌檔案是許多程序日誌檔案的彙總,從該檔案可以看出任何入侵企圖或成功的入侵。另外,如果胖友的系統裡有 ELK 日誌集中收集,它也會被收集進去。

1.11

Linux 系統安裝多個桌面環境有幫助嗎?

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

1.12

什麼是交換空間?

交換空間是 Linux 使用的一定空間,用於臨時儲存一些併發執行的程式。當 RAM 沒有足夠的記憶體來容納正在執行的所有程式時,就會發生這種情況。

1.13

什麼是 root 帳戶

root 帳戶就像一個系統管理員帳戶,允許你完全控制系統。你可以在此處建立和維護使用者帳戶,為每個帳戶分配不同的許可權。每次安裝 Linux 時都是預設帳戶。

1.14

什麼是 LILO?

LILO 是 Linux 的引導載入程式。它主要用於將 Linux 作業系統載入到主記憶體中,以便它可以開始執行。

1.15

什麼是 BASH?

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

1.16

什麼是 CLI?

命令列介面(英語:command-line interface,縮寫]:CLI)是在圖形使用者介面得到普及之前使用最為廣泛的使用者介面,它通常不支援滑鼠,使用者透過鍵盤輸入指令,計算機接收到指令後,予以執行。也有人稱之為字元使用者介面(CUI)。

通常認為,命令列介面(CLI)沒有圖形使用者介面(GUI)那麼方便使用者操作。因為,命令列介面的軟體通常需要使用者記憶操作的命令,但是,由於其本身的特點,命令列介面要較圖形使用者介面節約計算機系統的資源。在熟記命令的前提下,使用命令列介面往往要較使用圖形使用者介面的操作速度要快。所以,圖形使用者介面的作業系統中,都保留著可選的命令列介面。

1.17

什麼是 GUI?

圖形使用者介面(Graphical User Interface,簡稱 GUI,又稱圖形使用者介面)是指採用圖形方式顯示的計算機操作使用者介面。

圖形使用者介面是一種人與計算機通訊的介面顯示格式,允許使用者使用滑鼠等輸入裝置操縱螢幕上的圖示或選單選項,以選擇命令、呼叫檔案、啟動程式或執行其它一些日常任務。與透過鍵盤輸入文字或字元命令來完成例行任務的字元介面相比,圖形使用者介面有許多優點。

1.18

開源的優勢是什麼?

開源允許你將軟體(包括原始碼)免費分發給任何感興趣的人。然後,人們可以新增功能,甚至可以除錯和更正原始碼中的錯誤。它們甚至可以讓它執行得更好,然後再次自由地重新分配這些增強的原始碼。這最終使社群中的每個人受益。

1.19

GNU 專案的重要性是什麼?

這種所謂的自由軟體運動具有多種優勢,例如可以自由地執行程式以及根據你的需要自由學習和修改程式。它還允許你將軟體副本重新分發給其他人,以及自由改進軟體並將其釋出給公眾。

2

磁碟、目錄、檔案

2.1

簡單 Linux 檔案系統?

在 Linux 作業系統中,所有被作業系統管理的資源,例如網路介面卡、磁碟驅動器、印表機、輸入輸出裝置、普通檔案或是目錄都被看作是一個檔案。

也就是說在 Linux 系統中有一個重要的概念:一切都是檔案。其實這是 Unix 哲學的一個體現,而 Linux 是重寫 Unix 而來,所以這個概念也就傳承了下來。在 Unix 系統中,把一切資源都看作是檔案,包括硬體裝置。UNIX 系統把每個硬體都看成是一個檔案,通常稱為裝置檔案,這樣使用者就可以用讀寫檔案的方式實現對硬體的訪問。

Linux 支援 5 種檔案型別,如下圖所示:

100道Linux 常見面試題,建議收藏,慢慢讀~

2.2

Linux 的目錄結構是怎樣的?

這個問題,一般不會問。更多是實際使用時,需要知道。

Linux 檔案系統的結構層次鮮明,就像一棵倒立的樹,最頂層是其根目錄:

100道Linux 常見面試題,建議收藏,慢慢讀~

常見目錄說明:

/bin:存放二進位制可執行檔案(ls,cat,mkdir 等),常用命令一般都在這裡;

/etc:存放系統管理和配置檔案;

/home:存放所有使用者檔案的根目錄,是使用者主目錄的基點,比如使用者 user 的主目錄就是/home/user,可以用~user 表示;

/usr:用於存放系統應用程式/opt:額外安裝的可選應用程式包所放置的位置。一般情況下,我們可以把 tomcat 等都安裝到這裡;

/proc:虛擬檔案系統目錄,是系統記憶體的對映。可直接訪問這個目錄來獲取系統資訊;

/root:超級使用者(系統管理員)的主目錄(特權階級 o);

/sbin: 存放二進位制可執行檔案,只有 root 才能訪問。這裡存放的是系統管理員使用的系統級別的管理命令和程式。如 ifconfig 等;

/dev:用於存放裝置檔案;

/mnt:系統管理員安裝臨時檔案系統的安裝點,系統提供這個目錄是讓使用者臨時掛載其他的檔案系統;

/boot:存放用於系統引導時使用的各種檔案;

/lib :存放著和系統執行相關的庫檔案 ;

/tmp:用於存放各種臨時檔案,是公用的臨時檔案儲存點;

/var:用於存放執行時需要改變資料的檔案,也是某些大檔案的溢位區,比方說各種服務的日誌檔案(系統啟動日誌等。)等;

/lost+found:這個目錄平時是空的,系統非正常關機而留下“無家可歸”的檔案(windows 下叫什麼。chk)就在這裡。

2.3

什麼是 inode ?

一般來說,面試不會問 inode 。但是 inode 是一個重要概念,是理解 Unix/Linux 檔案系統和硬碟儲存的基礎。

理解 inode,要從檔案儲存說起。

檔案儲存在硬碟上,硬碟的最小儲存單位叫做“扇區”(Sector)。每個扇區儲存 512 位元組(相當於 0。5KB)。

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

檔案資料都儲存在“塊”中,那麼很顯然,我們還必須找到一個地方儲存檔案的元資訊,比如檔案的建立者、檔案的建立日期、檔案的大小等等。這種儲存檔案元資訊的區域就叫做 inode,中文譯名為“索引節點”。

每一個檔案都有對應的 inode,裡面包含了與該檔案有關的一些資訊。

簡述 Linux 檔案系統透過 i 節點把檔案的邏輯結構和物理結構轉換的工作過程?

一般來說,面試官不太會問這個題目。

Linux 透過 inode 節點表將檔案的邏輯結構和物理結構進行轉換。

· inode 節點是一個 64 位元組長的表,表中包含了檔案的相關資訊,其中有檔案的大小、檔案所有者、檔案的存取許可方式以及檔案的型別等重要資訊。在 inode 節點表中最重要的內容是磁碟地址表。在磁碟地址表中有 13 個塊號,檔案將以塊號在磁碟地址表中出現的順序依次讀取相應的塊。

· Linux 檔案系統透過把 inode 節點和檔名進行連線,當需要讀取該檔案時,檔案系統在當前目錄表中查詢該檔名對應的項,由此得到該檔案相對應的 inode 節點號,透過該 inode 節點的磁碟地址表把分散存放的檔案物理塊連線成檔案的邏輯結構。

2.4

什麼是硬連結和軟連結?

1)硬連結

由於 Linux 下的檔案是透過索引節點(inode)來識別檔案,硬連結可以認為是一個指標,指向檔案索引節點的指標,系統並不為它重新分配 inode 。每新增一個一個硬連結,檔案的連結數就加 1 。

不足:1)不可以在不同檔案系統的檔案間建立連結;2)只有超級使用者才可以為目錄建立硬連結。

2)軟連結

軟連結克服了硬連結的不足,沒有任何檔案系統的限制,任何使用者可以建立指向目錄的符號連結。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對檔案進行連結。

不足:因為連結檔案包含有原檔案的路徑資訊,所以當原檔案從一個目錄下移到其他目錄中,再訪問連結檔案,系統就找不到了,而硬連結就沒有這個缺陷,你想怎麼移就怎麼移;還有它要系統分配額外的空間用於建立新的索引節點和儲存原檔案的路徑。

實際場景下,基本是使用軟連結。總結區別如下:

· 硬連結不可以跨分割槽,軟體鏈可以跨分割槽。

· 硬連結指向一個 inode 節點,而軟連結則是建立一個新的 inode 節點。

· 刪除硬連結檔案,不會刪除原檔案,刪除軟連結檔案,會把原檔案刪除。

2.5

RAID 是什麼?

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

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

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

3

安全

3.1

一臺 Linux 系統初始化環境後需要做一些什麼安全工作?

1、新增普通使用者登陸,禁止 root 使用者登陸,更改 SSH 埠號。修改 SSH 埠不一定絕對哈。當然,如果要暴露在外網,建議改下。

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

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

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

5、設定只允許公司辦公網出口 IP 能登陸伺服器(看公司實際需要),也可以安裝 VPN 等軟體,只允許連線 VPN 到伺服器上。

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

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

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

(1) 設定 nginx_waf 模組防止 SQL 注入。

(2) 把 Web 服務使用 www 使用者啟動,更改網站目錄的所有者和所屬組為 www

3.2

什麼叫 CC 攻擊?什麼叫 DDOS 攻擊?

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

DDOS 攻擊,中文名叫分散式拒絕服務攻擊,指藉助伺服器技術將多個計算機聯合起來作為攻擊平臺,來對一個或多個目標發動 DDOS 攻擊。

攻擊,即是透過大量合法的請求佔用大量網路資源,以達到癱瘓網路的目的。

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

防 CC、DDOS 攻擊,這些只能是用硬體防火牆做流量清洗,將攻擊流量引入黑洞。

流量清洗這一塊,主要是買 ISP 服務商的防攻擊的服務就可以,機房一般有空餘流量,我們一般是買服務,畢竟攻擊不會是持續長時間。

3.3

什麼是網站資料庫注入?

由於程式設計師的水平及經驗參差不齊,大部分程式設計師在編寫程式碼的時候,沒有對使用者輸入資料的合法性進行判斷。

應用程式存在安全隱患。使用者可以提交一段資料庫查詢程式碼,根據程式返回的結果,獲得某些他想得知的資料,這就是所謂的 SQL 注入。

SQL 注入,是從正常的 WWW 埠訪問,而且表面看起來跟一般的 Web 頁面訪問沒什麼區別,如果管理員沒檢視日誌的習慣,可能被入侵很長時間都不會發覺。

如何過濾與預防?資料庫網頁端注入這種,可以考慮使用 nginx_waf 做過濾與預防。

Shell

/

Shell 指令碼是什麼?

/

一個 Shell 指令碼是一個文字檔案,包含一個或多個命令。作為系統管理員,我們經常需要使用多個命令來完成一項任務,我們可以新增這些所有命令在一個文字檔案(Shell 指令碼)來完成這些日常工作任務。

什麼是預設登入 Shell ?

在 Linux 作業系統,“/bin/bash” 是預設登入 Shell,是在建立使用者時分配的。

使用 chsh 命令可以改變預設的 Shell 。示例如下所示:

在 Shell 指令碼中,如何寫入註釋?

註釋可以用來描述一個指令碼可以做什麼和它是如何工作的。每一行註釋以 # 開頭。例子如下:

/

語法級

/

可以在 Shell 指令碼中使用哪些型別的變數?

在 Shell 指令碼,我們可以使用兩種型別的變數:

系統定義變數:系統變數是由系統系統自己建立的。這些變數通常由大寫字母組成,可以透過 set 命令檢視。

使用者定義變數:使用者變數由系統使用者來生成和定義,變數的值可以透過命令 “echo $” 檢視。

Shell 指令碼中 $? 標記的用途是什麼?

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

· 如果結束狀態是 0 ,說明前一個命令執行成功。例如:

·

如果結束狀態不是0,說明命令執行失敗。例如:

Bourne Shell(bash) 中有哪些特殊的變數?

下面的表列出了 Bourne Shell 為命令列設定的特殊變數。

如何取消變數或取消變數賦值?

unset 命令用於取消變數或取消變數賦值。語法如下所示:

## unset

Shell 指令碼中 if 語法如何巢狀?

在 Shell 指令碼中如何比較兩個數字?

在 if-then 中使用測試命令( -gt 等)來比較兩個數字。例如:

Shell 指令碼中 case 語句的語法?

基礎語法如下:

Shell 指令碼中 for 迴圈語法?

基礎語法如下:

Shell 指令碼中 while 迴圈語法?

基礎語法:

do-while 語句的基本格式?

do-while 語句類似於 while 語句,但檢查條件語句之前先執行命令(LCTT 譯註:意即至少執行一次。)。下面是用 do-while 語句的語法:

Shell 指令碼中 break 命令的作用?

break 命令一個簡單的用途是退出執行中的迴圈。我們可以在 while 和 until 迴圈中使用 break 命令跳出迴圈。

Shell 指令碼中 continue 命令的作用?

continue 命令不同於 break 命令,它只跳出當前迴圈的迭代,而不是整個迴圈。continue 命令很多時候是很有用的,例如錯誤發生,但我們依然希望繼續執行大迴圈的時候。

如何使指令碼可執行?

使用 chmod 命令來使指令碼可執行。例子如下:chmod a+x myscript。sh 。

如何除錯 Shell 指令碼?

使用 -x‘ 數(sh -x myscript。sh)可以除錯 Shell指令碼。

另一個種方法是使用 -nv 引數(sh -nv myscript。sh)。

如何將標準輸出和錯誤輸出同時重定向到同一位置?

方法一:2>&1 (如## ls /usr/share/doc > out。txt 2>&1 ) 。

方法二:&> (如## ls /usr/share/doc &> out。txt ) 。

在 Shell 指令碼中,如何測試檔案?

test 命令可以用來測試檔案。基礎用法如下表格:

Test 用法

-d 檔名 如果檔案存在並且是目錄,返回 true

-e 檔名 如果檔案存在,返回 true

-f 檔名 如果檔案存在並且是普通檔案,返回 true

-r 檔名 如果檔案存在並可讀,返回 true

-s 檔名 如果檔案存在並且不為空,返回 true

-w 檔名 如果檔案存在並可寫,返回 true

-x 檔名 如果檔案存在並可執行,返回 true

在 Shell 指令碼如何定義函式呢?

函式是擁有名字的程式碼塊。當我們定義程式碼塊,我們就可以在我們的指令碼呼叫函式名字,該塊就會被執行。示例如下所示:

如何讓 Shell 就指令碼得到來自終端的輸入?

read 命令可以讀取來自終端(使用鍵盤)的資料。read 命令得到使用者的輸入並置於你給出的變數中。例子如下:

如何執行算術運算?

有兩種方法來執行算術運算:

1、使用 expr 命令:## expr 5 + 2 。

2、用一個美元符號和方括號($[ 表示式 ]):test=$[16 + 4] ; test=$[16 + 4] 。

4

程式設計題

4.1

判斷一檔案是不是字元裝置檔案,如果是將其複製到 /dev 目錄下?

4.2

新增一個新組為 class1 ,然後新增屬於這個組的 30 個使用者,使用者名稱的形式為 stdxx ,其中 xx 從 01 到 30 ?

4.3

編寫 Shell 程式,實現自動刪除 50 個賬號的功能,賬號名為 stud1 至 stud50 ?

4.4

4. 寫一個 sed 命令,修改 /tmp/input.txt 檔案的內容?

5

實戰

5.1

如何選擇 Linux 作業系統版本?

一般來講,桌面使用者首選 Ubuntu ;伺服器首選 RHEL 或 CentOS ,兩者中首選 CentOS 。根據具體要求:

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

需要使用資料庫高階服務和電子郵件網路應用的使用者可以選擇 SUSE 。

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

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

CentOS 7 系列,也慢慢使用的會比較多了。

5.2

如何規劃一臺 Linux 主機,步驟是怎樣

確定機器是做什麼用的,比如是做 WEB 、DB、還是遊戲伺服器。不同的用途,機器的配置會有所不同。

確定好之後,就要定系統需要怎麼安裝,預設安裝哪些系統、分割槽怎麼做。

需要最佳化系統的哪些引數,需要建立哪些使用者等等的。

5.3

請問當使用者反饋網站訪問慢,如何處理?

有哪些方面的因素會導致網站網站訪問慢?

1、伺服器出口頻寬不夠用,本身伺服器購買的出口頻寬比較小。

一旦併發量大的話,就會造成分給每個使用者的出口頻寬就小,訪問速度自然就會慢。跨運營商網路導致頻寬縮減。例如,公司網站放在電信的網路上,那麼客戶這邊對接是長城寬頻或聯通,這也可能導致頻寬的縮減。

2、伺服器負載過大,導致響應不過來

可以從兩個方面入手分析:分析系統負載,使用 w 命令或者 uptime 命令檢視系統負載。如果負載很高,則使用 top 命令檢視 CPU ,MEM 等佔用情況,要麼是 CPU 繁忙,要麼是記憶體不夠。如果這二者都正常,再去使用 sar 命令分析網絡卡流量,分析是不是遭到了攻擊。一旦分析出問題的原因,採取對應的措施解決,如決定要不要殺死一些程序,或者禁止一些訪問等。

3、資料庫瓶頸

如果慢查詢比較多。那麼就要開發人員或 DBA 協助進行 SQL 語句的最佳化。如果資料庫響應慢,考慮可以加一個數據庫快取,如 Redis 等。然後,也可以搭建 MySQL 主從,一臺 MySQL 伺服器負責寫,其他幾臺從資料庫負責讀。

4、網站開發程式碼沒有最佳化好

例如 SQL 語句沒有最佳化,導致資料庫讀寫相當耗時。

針對網站訪問慢,怎麼去排查?

1、首先要確定是使用者端還是服務端的問題。當接到使用者反饋訪問慢,那邊自己立即訪問網站看看,如果自己這邊訪問快,基本斷定是使用者端問題,就需要耐心跟客戶解釋,協助客戶解決問題。

不要上來就看服務端的問題。一定要從源頭開始,逐步逐步往下。

2、如果訪問也慢,那麼可以利用瀏覽器的除錯功能,看看載入那一項資料消耗時間過多,是圖片載入慢,還是某些資料載入慢。

3、針對伺服器負載情況。檢視伺服器硬體(網路、CPU、記憶體)的消耗情況。如果是購買的雲主機,比如阿里雲,可以登入阿里雲平臺提供各方面的監控,比如 CPU、記憶體、頻寬的使用情況。

4、如果發現硬體資源消耗都不高,那麼就需要透過查日誌,比如看看 MySQL 慢查詢的日誌,看看是不是某條 SQL 語句查詢慢,導致網站訪問慢。

怎麼去解決?

1、如果是出口頻寬問題,那麼就申請加大出口頻寬。

2、如果慢查詢比較多,那麼就要開發人員或 DBA 協助進行 SQL 語句的最佳化。

3、如果資料庫響應慢,考慮可以加一個數據庫快取,如 Redis 等等。然後也可以搭建 MySQL 主從,一臺 MySQL 伺服器負責寫,其他幾臺從資料庫負責讀。

4、申請購買 CDN 服務,載入使用者的訪問。

5、如果訪問還比較慢,那就需要從整體架構上進行最佳化咯。做到專角色專用,多臺伺服器提供同一個服務。

5.4

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(網路子系統調優)。

6

檔案管理命令

6.1

cat 命令

cat 命令用於連線檔案並列印到標準輸出裝置上。cat 主要有三大功能:

1。一次顯示整個檔案:

2。從鍵盤建立一個檔案:

只能建立新檔案,不能編輯已有檔案。

3。將幾個檔案合併為一個檔案:

-b 對非空輸出行號

-n 輸出所有行號

例項:

(1)把 log2012。log 的檔案內容加上行號後輸入 log2013。log 這個檔案裡

(2)把 log2012。log 和 log2013。log 的檔案內容加上行號(空白行不加)之後將內容附加到 log。log 裡

(3)使用 here doc 生成新檔案

(4)反向列示

6.2

chmod 命令

Linux/Unix 的檔案呼叫許可權分為三級 : 檔案擁有者、群組、其他。利用 chmod 可以控制檔案如何被他人所呼叫。

用於改變 linux 系統檔案或目錄的訪問許可權。用它控制檔案或目錄的訪問許可權。該命令有兩種用法。一種是包含字母和運算子表示式的文字設定法;另一種是包含數字的數字設定法。

每一檔案或目錄的訪問許可權都有三組,每組用三位表示,分別為檔案屬主的讀、寫和執行許可權;與屬主同組的使用者的讀、寫和執行許可權;系統中其他使用者的讀、寫和執行許可權。可使用 ls -l test。txt 查詢。

以檔案 log2012。log 為例:

-rw-r——r—— 1 root root 296K 11-13 06:03 log2012。log

第一列共有 10 個位置,第一個字元指定了檔案型別。在通常意義上,一個目錄也是一個檔案。如果第一個字元是橫線,表示是一個非目錄的檔案。如果是 d,表示是一個目錄。從第二個字元開始到第十個 9 個字元,3 個字元一組,分別表示了 3 組使用者對檔案或者目錄的許可權。許可權字元用橫線代表空許可,r 代表只讀,w 代表寫,x 代表可執行。

常用引數:

許可權範圍:

u :目錄或者檔案的當前的使用者

g :目錄或者檔案的當前的群組

o :除了目錄或者檔案的當前使用者或群組之外的使用者或者群組

a :所有的使用者及群組

許可權代號:

r :讀許可權,用數字 4 表示

w :寫許可權,用數字 2 表示

x :執行許可權,用數字 1 表示

-:刪除許可權,用數字 0 表示

s :特殊許可權

例項:

(1)增加檔案 t。log 所有使用者可執行許可權

chmod a+x t。log

(2)撤銷原來所有的許可權,然後使擁有者具有可讀許可權,並輸出處理資訊

chmod u=r t。log -c

(3)給 file 的屬主分配讀、寫、執行(7)的許可權,給 file 的所在組分配讀、執行(5)的許可權,給其他使用者分配執行(1)的許可權

chmod 751 t。log -c(或者:chmod u=rwx,g=rx,o=x t。log -c)

(4)將 test 目錄及其子目錄所有檔案新增可讀許可權

chmod u+r,g+r,o+r -R text/ -c

6.3

chown 命令

chown 將指定檔案的擁有者改為指定的使用者或組,使用者可以是使用者名稱或者使用者 ID;組可以是組名或者組 ID;檔案是以空格分開的要改變許可權的檔案列表,支援萬用字元。

-c 顯示更改的部分的資訊

-R 處理指定目錄及子目錄

例項:

(1)改變擁有者和群組 並顯示改變資訊

chown -c mail:mail log2012。log

(2)改變檔案群組

chown -c :mail t。log

(3)改變資料夾及子檔案目錄屬主及屬組為 mail

chown -cR mail: test/

6.4

cp 命令

將原始檔複製至目標檔案,或將多個原始檔複製至目標目錄。

注意:命令行復制,如果目標檔案已經存在會提示是否覆蓋,而在 shell 指令碼中,如果不加 -i 引數,則不會提示,而是直接覆蓋!

-i 提示

-r 複製目錄及目錄內所有專案

-a 複製的檔案與原檔案時間一樣

例項:

(1)複製 a。txt 到 test 目錄下,保持原檔案時間,如果原檔案存在提示是否覆蓋。

cp -ai a。txt test

(2)為 a。txt 建議一個連結(快捷方式)

cp -s a。txt link_a。txt

6.5

find 命令

用於在檔案樹中查詢檔案,並作出相應的處理。

命令格式:

命令引數:

命令選項:

例項:

(1)查詢 48 小時內修改過的檔案

find -atime -2

(2)在當前目錄查詢 以 。log 結尾的檔案。。 代表當前目錄

find 。/ -name ’*。log‘

(3)查詢 /opt 目錄下 許可權為 777 的檔案

find /opt -perm 777

(4)查詢大於 1K 的檔案

find -size +1000c

(5)查詢等於 1000 字元的檔案

find -size +1000c

-exec 引數後面跟的是 command 命令,它的終止是以 ; 為結束標誌的,所以這句命令後面的分號是不可缺少的,考慮到各個系統中分號會有不同的意義,所以前面加反斜槓。{} 花括號代表前面 find 查找出來的檔名。

6.6

head 命令

head 用來顯示檔案的開頭至標準輸出中,預設 head 命令列印其相應檔案的開頭 10 行。

常用引數:

find -size +1000c

例項:

(1)顯示 1。log 檔案中前 20 行

head 1。log -n 20

(2)顯示 1。log 檔案前 20 位元組

head -c 20 log2014。log

(3)顯示 t。log 最後 10 行

head -n -10 t。log

6.7

less 命令

less 與 more 類似,但使用 less 可以隨意瀏覽檔案,而 more 僅能向前移動,卻不能向後移動,而且 less 在檢視之前不會載入整個檔案。

常用命令引數:

例項:

(1)ps 檢視程序資訊並透過 less 分頁顯示

ps -aux | less -N

(2)檢視多個檔案

less 1。log 2。log

可以使用 n 檢視下一個,使用 p 檢視前一個。

6.8

ln 命令

功能是為檔案在另外一個位置建立一個同步的連結,當在不同目錄需要該問題時,就不需要為每一個目錄建立同樣的檔案,透過 ln 建立的連結(link)減少磁碟佔用量。

連結分類:軟體連結及硬連結

軟連結:

1。軟連結,以路徑的形式存在。類似於 Windows 作業系統中的快捷方式

2。軟連結可以 跨檔案系統 ,硬連結不可以

3。軟連結可以對一個不存在的檔名進行連結

4。軟連結可以對目錄進行連結

硬連結:

1。硬連結,以檔案副本的形式存在。但不佔用實際空間。

2。不允許給目錄建立硬連結

3。硬連結只有在同一個檔案系統中才能建立

需要注意:

第一:ln 命令會保持每一處連結檔案的同步性,也就是說,不論你改動了哪一處,其它的檔案都會發生相同的變化;

第二:ln 連結又分軟連結和硬連結兩種,軟連結就是 ln –s 原始檔 目標檔案,它只會在你選定的位置上生成一個檔案的映象,不會佔用磁碟空間,硬連結 ln 原始檔 目標檔案,沒有引數-s, 它會在你選定的位置上生成一個和原始檔大小相同的檔案,無論是軟連結還是硬連結,檔案都保持同步變化。

第三:ln 指令用在連結檔案或目錄,如同時指定兩個以上的檔案或目錄,且最後的目的地是一個已經存在的目錄,則會把前面指定的所有檔案或目錄複製到該目錄中。若同時指定多個檔案或目錄,且最後的目的地並非是一個已存在的目錄,則會出現錯誤資訊。

常用引數:

-b 刪除,覆蓋以前建立的連結

-s 軟連結(符號連結)

-v 顯示詳細處理過程

例項:

(1)給檔案建立軟連結,並顯示操作資訊

ln -sv source。log link。log

(2)給檔案建立硬連結,並顯示操作資訊

ln -v source。log link1。log

(3)給目錄建立軟連結

ln -sv /opt/soft/test/test3 /opt/soft/test/test5

6.9

locate 命令

locate 透過搜尋系統內建文件資料庫達到快速找到檔案,資料庫由 updatedb 程式來更新,updatedb 是由 cron daemon 週期性呼叫的。預設情況下 locate 命令在搜尋資料庫時比由整個由硬碟資料來搜尋資料來得快,但較差勁的是 locate 所找到的檔案若是最近才建立或 剛更名的,可能會找不到,在內定值中,updatedb 每天會跑一次,可以由修改 crontab 來更新設定值 (etc/crontab)。

locate 與 find 命令相似,可以使用如 *、? 等進行正則匹配查詢

常用引數:

-l num(要顯示的行數)

-f 將特定的檔案系統排除在外,如將 proc 排除在外

-r 使用正則運算式做為尋找條件

例項:

(1)查詢和 pwd 相關的所有檔案(檔名中包含 pwd)

locate pwd

(2)搜尋 etc 目錄下所有以 sh 開頭的檔案

locate /etc/sh

(3)查詢 /var 目錄下,以 reason 結尾的檔案

locate -r ’^/var。reason$‘(其中。表示一個字元,表示任務多個;。*表示任意多個字元)

6.10

more 命令

功能類似於 cat, more 會以一頁一頁的顯示方便使用者逐頁閱讀,而最基本的指令就是按空白鍵(space)就往下一頁顯示,按 b 鍵就會往回(back)一頁顯示。

命令引數:

常用操作命令:

例項:

(1)顯示檔案中從第 3 行起的內容

more +3 text。txt

(2)在所列出檔案目錄詳細資訊,藉助管道使每次顯示 5 行

ls -l | more -5

按空格顯示下 5 行。

6.11

mv 命令

移動檔案或修改檔名,根據第二引數型別(如目錄,則移動檔案;如為檔案則重命令該檔案)。

當第二個引數為目錄時,第一個引數可以是多個以空格分隔的檔案或目錄,然後移動第一個引數指定的多個檔案到第二個引數指定的目錄中。

例項:

(1)將檔案 test。log 重新命名為 test1。txt

mv test。log test1。txt

(2)將檔案 log1。txt,log2。txt,log3。txt 移動到根的 test3 目錄中

mv llog1。txt log2。txt log3。txt /test3

(3)將檔案 file1 改名為 file2,如果 file2 已經存在,則詢問是否覆蓋

mv -i log1。txt log2。txt

(4)移動當前資料夾下的所有檔案到上一級目錄

mv * 。。/

6.12

rm 命令

刪除一個目錄中的一個或多個檔案或目錄,如果沒有使用 -r 選項,則 rm 不會刪除目錄。如果使用 rm 來刪除檔案,通常仍可以將該檔案恢復原狀。

rm [選項] 檔案…

例項:

(1)刪除任何 。log 檔案,刪除前逐一詢問確認:

rm -i *。log

(2)刪除 test 子目錄及子目錄中所有檔案刪除,並且不用一一確認:

rm -rf test

(3)刪除以 -f 開頭的檔案

rm —— -f*

6.13

tail 命令

用於顯示指定檔案末尾內容,不指定檔案時,作為輸入資訊進行處理。常用檢視日誌檔案。

常用引數:

-f 迴圈讀取(常用於檢視遞增的日誌檔案)

-n 顯示行數(從後向前)

(1)迴圈讀取逐漸增加的檔案內容

ping 127。0。0。1 > ping。log &

後臺執行:可使用 jobs -l 檢視,也可使用 fg 將其移到前臺執行。

tail -f ping。log(檢視日誌)

6.14

touch 命令

Linux touch 命令用於修改檔案或者目錄的時間屬性,包括存取時間和更改時間。若檔案不存在,系統會建立一個新的檔案。

ls -l 可以顯示檔案的時間記錄。

語法

引數說明:

a 改變檔案的讀取時間記錄。

m 改變檔案的修改時間記錄。

c 假如目的檔案不存在,不會建立新的檔案。與 ——no-create 的效果一樣。

f 不使用,是為了與其他 unix 系統的相容性而保留。

r 使用參考檔的時間記錄,與 ——file 的效果一樣。

d 設定時間與日期,可以使用各種不同的格式。

t 設定檔案的時間記錄,格式與 date 指令相同。

–no-create 不會建立新檔案。

–help 列出指令格式。

–version 列出版本訊息。

例項

使用指令“touch”修改檔案“testfile”的時間屬性為當前系統時間,輸入如下命令:

首先,使用ls命令檢視testfile檔案的屬性,如下所示:

執行指令“touch”修改檔案屬性以後,並再次檢視該檔案的時間屬性,如下所示:

使用指令“touch”時,如果指定的檔案不存在,則將建立一個新的空白檔案。例如,在當前目錄下,使用該指令建立一個空白檔案“file”,輸入如下命令:

6.15

vim 命令

Vim 是從 vi 發展出來的一個文字編輯器。程式碼補完、編譯及錯誤跳轉等方便程式設計的功能特別豐富,在程式設計師中被廣泛使用。

開啟檔案並跳到第 10 行:vim +10 filename。txt 。

開啟檔案跳到第一個匹配的行:vim +/search-term filename。txt 。

以只讀模式開啟檔案:vim -R /etc/passwd 。

基本上 vi/vim 共分為三種模式,分別是命令模式(Command mode),輸入模式(Insert mode)和底線命令模式(Last line mode)。

簡單的說,我們可以將這三個模式想成底下的圖示來表示:

6.16

whereis 命令

whereis 命令只能用於程式名的搜尋,而且只搜尋二進位制檔案(引數-b)、man 說明檔案(引數-m)和原始碼檔案(引數-s)。如果省略引數,則返回所有資訊。whereis 及 locate 都是基於系統內建的資料庫進行搜尋,因此效率很高,而 find 則是遍歷硬碟查詢檔案。

常用引數:

例項:

(1)查詢 locate 程式相關檔案

whereis locate

(2)查詢 locate 的原始碼檔案

whereis -s locate

(3)查詢 lcoate 的幫助檔案

whereis -m locate

6.17

which 命令

在 linux 要查詢某個檔案,但不知道放在哪裡了,可以使用下面的一些命令來搜尋:

which 檢視可執行檔案的位置。

whereis 檢視檔案的位置。

locate 配合資料庫檢視檔案位置。

find 實際搜尋硬碟查詢檔名稱。

which 是在 PATH 就是指定的路徑中,搜尋某個系統命令的位置,並返回第一個搜尋結果。使用 which 命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。

常用引數:

-n 指定檔名長度,指定的長度必須大於或等於所有檔案中最長的檔名。

例項:

(1)檢視 ls 命令是否存在,執行哪個

which ls

(2)檢視 which

which which

3)檢視 cd

which cd(顯示不存在,因為 cd 是內建命令,而 which 查詢顯示是 PATH 中的命令)

檢視當前 PATH 配置:

echo $PATH

或使用 env 檢視所有環境變數及對應值

7

文件編輯命令

7.1

grep 命令

強大的文字搜尋命令,grep(Global Regular Expression Print) 全域性正則表示式搜尋。

grep 的工作方式是這樣的,它在一個或多個檔案中搜索字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到標準輸出,不影響原檔案內容。

命令格式:

grep [option] pattern file|dir

常用引數:

-A n ——after-context 顯示匹配字元後 n 行

-B n ——before-context 顯示匹配字元前 n 行

-C n ——context 顯示匹配字元前後 n 行

-c ——count 計算符合樣式的列數

-i 忽略大小寫

-l 只列出檔案內容符合指定的樣式的檔名稱

-f 從檔案中讀取關鍵詞

-n 顯示匹配內容的所在檔案中行數

-R 遞迴查詢資料夾

grep 的規則表示式:

例項:

(1)查詢指定程序

ps -ef | grep svn

(2)查詢指定程序個數

ps -ef | grep svn -c

(3)從檔案中讀取關鍵詞

cat test1。txt | grep -f key。log

(4)從資料夾中遞迴查詢以 grep 開頭的行,並只列出檔案

grep -lR ’^grep‘ /tmp

(5)查詢非 x 開關的行內容

grep ’^[^x]‘ test。txt

(6)顯示包含 ed 或者 at 字元的內容行

grep -E ’ed|at‘ test。txt

7.2

wc 命令

wc(word count)功能為統計指定的檔案中位元組數、字數、行數,並將統計結果輸出

命令格式:

wc [option] file。。

命令引數:

-c 統計位元組數

-l 統計行數

-m 統計字元數

-w 統計詞數,一個字被定義為由空白、跳格或換行字元分隔的字串

例項:

(1)查詢檔案的 行數 單詞數 位元組數 檔名

wc text。txt

結果:

7 8 70 test。txt

(2)統計輸出結果的行數

cat test。txt | wc -l

8

磁碟管理命令

8.1

cd 命令

cd(changeDirectory) 命令語法:

cd [目錄名]

說明:切換當前目錄至 dirName。

例項:

(1)進入目錄

cd /

(2)進入 “home” 目錄

cd ~

(3)進入上一次工作路徑

cd -

(4)把上個命令的引數作為 cd 引數使用。

cd !$

8.2

df 命令

顯示磁碟空間使用情況。獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊,如果沒有檔名被指定,則所有當前被掛載的檔案系統的可用空間將被顯示。預設情況下,磁碟空間將以 1KB 為單位進行顯示,除非環境變數 POSIXLY_CORRECT 被指定,那樣將以 512 位元組為單位進行顯示:

-a 全部檔案系統列表

-h 以方便閱讀的方式顯示資訊

-i 顯示 inode 資訊

-k 區塊為 1024 位元組

-l 只顯示本地磁碟

-T 列出檔案系統型別

例項:

(1)顯示磁碟使用情況

df -l

(2)以易讀方式列出所有檔案系統及其型別

df -haT

8.3

du 命令

du 命令也是檢視使用空間的,但是與 df 命令不同的是 Linux du 命令是對檔案和目錄磁碟使用的空間的檢視:

命令格式:

du [選項] [檔案]

常用引數:

-a 顯示目錄中所有檔案大小

-k 以 KB 為單位顯示檔案大小

-m 以 MB 為單位顯示檔案大小

-g 以 GB 為單位顯示檔案大小

-h 以易讀方式顯示檔案大小

-s 僅顯示總計

-c 或——total 除了顯示個別目錄或檔案的大小外,同時也顯示所有目錄或檔案的總和

例項:

(1)以易讀方式顯示資料夾內及子資料夾大小

du -h scf/

(2)以易讀方式顯示資料夾內所有檔案大小

du -ah scf/

(3)顯示幾個檔案或目錄各自佔用磁碟空間的大小,還統計它們的總和

du -hc test/ scf/

(4)輸出當前目錄下各個子目錄所使用的空間

du -hc ——max-depth=1 scf/

8.4

ls 命令

就是 list 的縮寫,透過 ls 命令不僅可以檢視 linux 資料夾包含的檔案,而且可以檢視檔案許可權(包括目錄、資料夾、檔案許可權)檢視目錄資訊等等。

常用引數搭配:

ls -a 列出目錄所有檔案,包含以。開始的隱藏檔案

ls -A 列出除。及。。的其它檔案

ls -r 反序排列

ls -t 以檔案修改時間排序

ls -S 以檔案大小排序

ls -h 以易讀大小顯示

ls -l 除了檔名之外,還將檔案的許可權、所有者、檔案大小等資訊詳細列出來

例項:

(1) 按易讀方式按時間反序排序,並顯示檔案詳細資訊

ls -lhrt

(2) 按大小反序顯示檔案詳細資訊

ls -lhrt

(3)列出當前目錄中所有以“t”開頭的目錄的詳細內容

ls -l t*

(4) 列出檔案絕對路徑(不包含隱藏檔案)

ls | sed “s:^:pwd/:”

(5) 列出檔案絕對路徑(包含隱藏檔案)

find $pwd -maxdepth 1 | xargs ls -ld

8.5

mkdir 命令

mkdir 命令用於建立資料夾。

可用選項:

-m: 對新建目錄設定存取許可權,也可以用 chmod 命令設定;

-p: 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不在的目錄,即一次可以建立多個目錄。

例項:

(1)當前工作目錄下建立名為 t 的資料夾

mkdir t

(2)在 tmp 目錄下建立路徑為 test/t1/t 的目錄,若不存在,則建立:

mkdir -p /tmp/test/t1/t

8.6

pwd 命令

pwd 命令用於檢視當前工作目錄路徑。

例項:

(1)檢視當前路徑

pwd

(2)檢視軟連結的實際路徑

pwd -P

8.7

rmdir 命令

從一個目錄中刪除一個或多個子目錄項,刪除某目錄時也必須具有對其父目錄的寫許可權。注意:不能刪除非空目錄

例項:

(1)當 parent 子目錄被刪除後使它也成為空目錄的話,則順便一併刪除:rmdir -p parent/child/child11

9

九、網路通訊命令

9.1

ifconfig 命令

ifconfig 用於檢視和配置 Linux 系統的網路介面。檢視所有網路介面及其狀態:ifconfig -a 。使用 up 和 down 命令啟動或停止某個介面:ifconfig eth0 up 和 ifconfig eth0 down 。

9.2

iptables 命令

iptables ,是一個配置 Linux 核心防火牆的命令列工具。功能非常強大,對於我們開發來說,主要掌握如何開放埠即可。例如:

把來源 IP 為 192。168。1。101 訪問本機 80 埠的包直接拒絕:iptables -I INPUT -s 192。168。1。101 -p tcp ——dport 80 -j REJECT 。

開啟 80 埠,因為 web 對外都是這個埠

iptables -A INPUT -p tcp ——dport 80 -j ACCEP

另外,要注意使用 iptables save 命令,進行儲存。否則,伺服器重啟後,配置的規則將丟失。

9.3

netstat 命令

Linux netstat 命令用於顯示網路狀態。利用 netstat 指令可讓你得知整個 Linux 系統的網路情況。

語法

netstat [-acCeFghilMnNoprstuvVwx][-A][——ip]

引數說明:

-a 或–all 顯示所有連線中的 Socket。

-A或– 列出該網路型別連線中的相關地址。

-c 或–continuous 持續列出網路狀態。

-C 或–cache 顯示路由器配置的快取資訊。

-e 或–extend 顯示網路其他相關資訊。

-F 或–fib 顯示 FIB。

-g 或–groups 顯示多重廣播功能群組組員名單。

-h 或–help 線上幫助。

-i 或–interfaces 顯示網路介面資訊表單。

-l 或–listening 顯示監控中的伺服器的 Socket。

-M 或–masquerade 顯示偽裝的網路連線。

-n 或–numeric 直接使用 IP 地址,而不透過域名伺服器。

-N 或–netlink 或–symbolic 顯示網路硬體外圍裝置的符號連線名稱。

-o 或–timers 顯示計時器。

-p 或–programs 顯示正在使用 Socket 的程式識別碼和程式名稱。

-r 或–route 顯示 Routing Table。

-s 或–statistice 顯示網路工作資訊統計表。

-t 或–tcp 顯示 TCP 傳輸協議的連線狀況。

-u 或–udp 顯示 UDP 傳輸協議的連線狀況。

-v 或–verbose 顯示指令執行過程。

-V 或–version 顯示版本資訊。

-w 或–raw 顯示 RAW 傳輸協議的連線狀況。

-x 或–unix 此引數的效果和指定“-A unix”引數相同。

–ip 或–inet 此引數的效果和指定“-A inet”引數相同。

例項

如何檢視系統都開啟了哪些埠?

如何檢視網路連線狀況?

如何統計系統當前程序連線數?

輸入命令 netstat -an | grep ESTABLISHED | wc -l 。

輸出結果 177 。一共有 177 連線數。

用 netstat 命令配合其他命令,按照源 IP 統計所有到 80 埠的 ESTABLISHED 狀態連結的個數?

嚴格來說,這個題目考驗的是對 awk 的使用。

首先,使用 netstat -an|grep ESTABLISHED 命令。結果如下:

9.4

ping 命令

Linux ping 命令用於檢測主機。

執行 ping 指令會使用 ICMP 傳輸協議,發出要求迴應的資訊,若遠端主機的網路功能沒有問題,就會迴應該資訊,因而得知該主機運作正常。

指定接收包的次數

9.5

telnet 命令

Linux telnet 命令用於遠端登入。執行 telnet 指令開啟終端機階段作業,並登入遠端主機。

語法

引數說明:

登入遠端主機

10

系統管理命令

10.1

date 命令

顯示或設定系統的日期與時間。

命令引數:

-d 顯示字串所指的日期與時間。字串前後必須加上雙引號。

-s 根據字串來設定日期與時間。字串前後必須加上雙引號。

-u 顯示 GMT。

%H 小時(00-23)

%I 小時(00-12)

%M 分鐘(以 00-59 來表示)

%s 總秒數。起算時間為 1970-01-01 00:00:00 UTC。

%S 秒(以本地的慣用法來表示)

%a 星期的縮寫。

%A 星期的完整名稱。

%d 日期(以 01-31 來表示)。

%D 日期(含年月日)。

%m 月份(以 01-12 來表示)。

%y 年份(以 00-99 來表示)。

%Y 年份(以四位數來表示)。

例項:

(1)顯示下一天

date +%Y%m%d ——date=“+1 day” //顯示下一天的日期

(2)-d 引數使用

date -d “nov 22” 今年的 11 月 22 日是星期三

date -d ’2 weeks‘ 2 周後的日期

date -d ’next monday‘ (下週一的日期)

date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d

date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d

date -d last-month +%Y%m(上個月是幾月)

date -d next-month +%Y%m(下個月是幾月)

10.2

free 命令

顯示系統記憶體使用情況,包括物理記憶體、互動區記憶體(swap)和核心緩衝區記憶體。

命令引數:

-b 以 Byte 顯示記憶體使用情況

-k 以 kb 為單位顯示記憶體使用情況

-m 以 mb 為單位顯示記憶體使用情況

-g 以 gb 為單位顯示記憶體使用情況

-s 持續顯示記憶體

-t 顯示記憶體使用總合

例項:

(1)顯示記憶體使用情況

(2)以總和的形式顯示記憶體的使用資訊

(3)週期性查詢記憶體使用情況

10.3

kill 命令

傳送指定的訊號到相應程序。不指定型號將傳送 SIGTERM(15)終止指定程序。如果仍無法終止該程式可用“-KILL” 引數,其傳送的訊號為 SIGKILL(9) ,將強制結束程序,使用 ps 命令或者 jobs 命令可以檢視程序號。root 使用者將影響使用者的程序,非 root 使用者只能影響自己的程序。

常用引數:

-l 訊號,若果不加訊號的編號引數,則使用“-l”引數會列出全部的訊號名稱

-a 當處理當前程序時,不限制命令名和程序號的對應關係

-p 指定 kill 命令只打印相關程序的程序號,而不傳送任何訊號

-s 指定傳送訊號

-u 指定使用者

例項:

(1)先使用 ps 查詢程序 pro1,然後用 kill 殺掉

kill -9 $(ps -ef | grep pro1)

10.4

4. ps 命令

ps(process status),用來檢視當前執行的程序狀態,一次性檢視,如果需要動態連續結果使用 top

linux 上程序有 5 種狀態:

執行(正在執行或在執行佇列中等待)

中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號)

不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷髮生)

僵死(程序已終止, 但程序描述符存在, 直到父程序呼叫 wait4()系統呼叫後釋放)

停止(程序收到 SIGSTOP, SIGSTP, SIGTIN, SIGTOU 訊號後停止執行執行)

ps 工具標識程序的 5 種狀態碼:

D 不可中斷 uninterruptible sleep (usually IO)

R 執行 runnable (on run queue)

S 中斷 sleeping

T 停止 traced or stopped

Z 僵死 a defunct (”zombie”) process

命令引數:

-A 顯示所有程序

a 顯示所有程序

-a 顯示同一終端下所有程序

c 顯示程序真實名稱

e 顯示環境變數

f 顯示程序間的關係

r 顯示當前終端執行的程序

-aux 顯示所有包含其它使用的程序

例項:

(1)顯示當前所有程序環境變數及程序間關係

ps -ef

(2)顯示當前所有程序

ps -A

(3)與 grep 聯用查詢某程序

ps -aux | grep apache

(4)找出與 cron 與 syslog 這兩個服務有關的 PID 號碼

ps aux | grep ’(cron|syslog)‘

10.5

rpm 命令

Linux rpm 命令用於管理套件。

rpm(redhat package manager) 原本是 Red Hat Linux 發行版專門用來管理 Linux 各項套件的程式,由於它遵循 GPL 規則且功能強大方便,因而廣受歡迎。逐漸受到其他發行版的採用。RPM 套件管理方式的出現,讓 Linux 易於安裝,升級,間接提升了 Linux 的適用度。

10.6

top 命令

顯示當前系統正在執行的程序的相關資訊,包括程序 ID、記憶體佔用率、CPU 佔用率等

常用引數:

-c 顯示完整的程序命令

-s 保密模式

-p 指定程序顯示

-n 迴圈顯示次數

例項:

前五行是當前系統情況整體的統計資訊區。第一行,任務佇列資訊,同 uptime 命令的執行結果,具體引數說明情況如下:

14:06:23 — 當前系統時間

up 70 days, 16:44 — 系統已經運行了 70 天 16 小時 44 分鐘(在這期間系統沒有重啟過的吆!)

2 users — 當前有 2 個使用者登入系統

load average: 1。15, 1。42, 1。44 — load average 後面的三個數分別是 1 分鐘、5 分鐘、15 分鐘的負載情況。

load average 資料是每隔 5 秒鐘檢查一次活躍的程序數,然後按特定演算法計算出的數值。如果這個數除以邏輯 CPU 的數量,結果高於 5 的時候就表明系統在超負荷運轉了。

第二行,Tasks — 任務(程序),具體資訊說明如下:

系統現在共有 206 個程序,其中處於執行中的有 1 個,205 個在休眠(sleep),stoped 狀態的有 0 個,zombie 狀態(殭屍)的有 0 個。

第三行,cpu 狀態資訊,具體屬性說明如下:

備註:在這裡CPU的使用比率和windows概念不同,需要理解linux系統使用者空間和核心空間的相關知識!

第四行,記憶體狀態,具體資訊如下:

第五行,swap交換分割槽資訊,具體資訊說明如下:

第六行,空行。

第七行以下:各程序(任務)的狀態監控,專案列資訊說明如下:

10.7

yum 命令

yum( Yellow dog Updater, Modified)是一個在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端軟體包管理器。

基於 RPM 包管理,能夠從指定的伺服器自動下載 RPM 包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

yum 提供了查詢、安裝、刪除某一個、一組甚至全部軟體包的命令,而且命令簡潔而又好記。

1。列出所有可更新的軟體清單命令:yum check-update

2。更新所有軟體命令:yum update

3。僅安裝指定的軟體命令:yum install

4。僅更新指定的軟體命令:yum update

5。列出所有可安裝的軟體清單命令:yum list

6。刪除軟體包命令:yum remove

7。查詢軟體包 命令:yum search

8。清除快取命令:

yum clean packages: 清除快取目錄下的軟體包

yum clean headers: 清除快取目錄下的 headers

yum clean oldheaders: 清除快取目錄下舊的 headers

yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除快取目錄下的軟體包及舊的headers

例項

安裝 pam-devel

11

備份壓縮命令

11.1

bzip2 命令

建立 *。bz2 壓縮檔案:bzip2 test。txt 。

11.2

gzip 命令

建立一個 *。gz 的壓縮檔案:gzip test。txt 。

顯示壓縮的比率:gzip -l *。gz 。

11.3

tar 命令

用來壓縮和解壓檔案。tar 本身不具有壓縮功能,只具有打包功能,有關壓縮及解壓是呼叫其它的功能來完成。

弄清兩個概念:打包和壓縮。打包是指將一大堆檔案或目錄變成一個總的檔案;壓縮則是將一個大的檔案透過一些壓縮演算法變成一個小檔案

常用引數:

有關 gzip 及 bzip2 壓縮:

gzip

例項:

壓縮 gzip fileName 。tar。gz 和。tgz

解壓:gunzip filename。gz 或 gzip -d filename。gz

bz2

例項:

壓縮 bzip2 -z filename 。tar。bz2

解壓:bunzip filename。bz2 或 bzip -d filename。bz2

例項:

(1)將檔案全部打包成 tar 包

(2)將 /etc 下的所有檔案及目錄打包到指定目錄,並使用 gz 壓縮

(3)檢視剛打包的檔案內容(一定加z,因為是使用 gzip 壓縮的)

(4)要壓縮打包 /home, /etc ,但不要 /home/dmtsai

11.4

4. unzip 命令

解壓 *。zip 檔案:unzip test。zip

檢視 *。zip 檔案的內容:unzip -l jasper。zip

END