計算機三級Linux應用與開發

第 1 章 計算機體系結構與操作系統

1.1 計算科學與計算機系統

  1. 馮諾依曼體系的結構要點:

計算機數制采用二進制,程序指令和數據統一存儲,計算機應按照程序順序執行。按照馮諾依曼結構設計的計算機由 控制器,運算器,存儲器和輸入設備,輸出設備五部分組成。

  1. 控制器和運算器 構成現代通用計算機系統的中央處理器 (CPU,central processing unit),即傳統的單核 CPU。

  2. 在主存儲器中實現存入要執行的程序和要處理的數據,運行時 CPU 將自動并按順序從主存儲器中取出指令一條一條執行。馮諾依曼結構的計算機系統映射現實世界的時空觀,存儲體系對應空間域,指令順序執行過程對應時間域。

1.2 計算機體系結構的基本概念

1.2.2 計算機系統的層次結構
  1. 計算機系統是由軟件和硬件組成的一個復雜的有機整體
  2. 計算機系統的層次結構:

把計算機系統按功能可分為多級層次結構。

第 0 層:數字邏輯層,

第 1 層:微體系結構層,

第 2 層:傳統機器層,

第 3 層:操作系統層,

第 4 層:匯編語言層,

第 5 層:高級語言層,

第 6 層:應用程序層。

  1. 計算機系統結構設計者所關心的是(機器語言或匯編語言程序員)所看到的計算機結構
1.2.3 指令集
  1. 指令集是一個計算機系統支持的所有機器指令的集合,它常常被看作軟硬件之間的分界面。

  2. 計算機中最普通的指令格式是:操作碼+操作數(地址)。用二進制數據來表示。

  3. 根據操作數的數量不同,可以將指令格式分為:零地址指令,一地址指令、二地址指令、三地址指令和多地址指令。

  4. 尋址方式按指令的尋址空間來分,可分為立即數尋址、寄存器尋址、主存尋址和堆棧尋址 4 種。

  5. 指令的功能分類:

從指令的從操用計算機的指令系統中常見的指令類型包括:數據傳輸指令、算術運算指令、邏輯運算指令、程序控制指令、輸入輸出指令、處理器控制和調試指令。

  1. 指 令 集 因 其 系 統 性 和 復 雜 性 , 也 被 稱 為 指 令 集 體 系 結 構 ISA ( instruction set architecture)

  2. 按照指令系統復雜程度不同,ISA 可分為 CISC 和 RISC 兩大陣營。CISC 是指復雜指令系統計算機 complex instruction set computer; RISC 是指精簡指令系統計算機 reduced instruction set computer. CISC 結構追求的目標是強化指令功能,減少程序的指令條數,以達到提高性能的目的。RISC 通過減少指令種類、規范指令格式和簡化尋址方式等方法,方便處理器內部的并行處理,提高超大規模集成電路 VLSI 期間的使用效率,從而大幅度的提高處理器的性能。

1.2.4 存儲系統
  1. 現代通用計算機中存儲系統的層次結構:

第一層寄存器組,

第二層高速緩沖存儲器(cache),

第三層主存儲器,

第四層輔助存儲器,

第五層脫機存儲器。存儲介質越往上速度越快、價格越高,越往下,容量越大。

  1. 程序訪問的局部性包含時間局部性和空間局部性兩方面。

時間局部性是指最近訪問過的內容很可能會在短期內被再次訪問。如程序中的循環,循環體的指令要被反復執行。空間局部性是指某個存儲單位被訪問,短時間內其附近的存儲單元也會被訪問。

  1. “Cache-主存-輔存”是存儲體系里最重要的三級層次,通常將其分為“Cache-主存”和“主存-輔存”兩個兩級存儲系統來討論。“主存-輔存”兩級存儲系統也稱為虛擬存儲系統。

  2. “Cache-主存”層次的理論依據是程序局部性。

  3. Cache 與主存儲器間最基本的地址映射方式有三種:全相聯映射、直接映射和組相聯映射。

  4. 在采用全相聯映射和組相聯映射的系統中,當主存向 Cache 傳送一個新塊而 Cache 已滿時,就需要使用替換算法將 Cache 中的某一塊換出。常用替換算法有隨機法RAND),先進先出(FIFO)、最近最少使用法(LRU)。

  5. Cache 讀寫過程設計數據一致性的問題,一致性是指同一份數據在不同存儲位置的多

個拷貝應保持一致。Cache 的一致性體現在連個方面,一是 Cache 和主存之間的數據

一致性,二是各個處理器內核私有的 Cache 之間的數據一致性。

  1. Cache 與主存之間的數據一致性通過 Cache 特定的寫操作方式來保證:寫直達(writethrough),寫回(write back)

  2. 多核處理器中,處理器內核之間的緩存一致性通過緩存一致性協議類維護,MESI(Modified Exclusive Shared or Invalid)最為經典的緩存一致性協議

  3. MESI 協議將 Cache Line 的狀態分成 修改(Modify)、獨占(Exclusive)、共享(Shared)和失效(Invalid)。

  4. 虛擬存儲系統的提出是為了滿足應用程序對高速大容量主存的需求,擴大存儲系統容

量,速度慢。“主存-輔存”層次的存儲管理技術稱為虛擬存儲管理技術。

1.3 微處理器體系結構

  1. 微處理器,即中央處理器 CPU 是計算機系統中最重要、最核心的部件

  2. CPU 單核處理器基本邏輯結構,主要由控制器、運算器和存儲單元三部分組成,這三部份由 CPU 內部總線相連。

  3. 目前,通用處理器芯片基本上都采用了多核處理器(Chip Multi-Processor,CMP)架構。

按照計算內核的對等與否,CMP 可分為同構多核和異構多核:計算內核相同、地位對等的稱為同構多核;計算內核不同、地位不對等的稱為異構多核,多采用“主處理核+協處理核”的設計。P19

  1. CPU 指令執行過程基本上包含 5 個階段:取指令、指令譯碼、執行指令、訪存取數、結果寫回

1.4 操作系統的基本概念

  1. 操作系統是通用計算機系統中不可或缺的系統軟件
  2. 計算機系統的資源按照其作用可大致分為四類:處理器、存儲器、I/O 設備和文件。
  3. 對這四類資源的管理就是操作系統內核的主要功能。
1.4.2 操作系統的基本特征:

現代通用操作系統一般具有并發、共享、虛擬和異步這四個基本特征。并發是指兩個或多個事件在同一時間間隔內發生。共享是指計算機系統中的軟硬件資源可被多個并發執行的進程共同使用,而不是被一個進程所獨占。虛擬是指把一個物理上的實體變為一個或多個邏輯上的對應物。異步又稱隨機性或不確定性,異步是指在相同的計算機環境和初始條件下,在同一數據集上運行的同一程序每次執行的順序和所需時間都不一定相同。(避免混淆:并行是指兩個或多個事件在同一時刻發生)

1.5 操作系統的基本功能和原理

  1. 從資源管理的角度來看,操作系統具備五大基本功能:處理器管理、存儲管理、設備管理、文件管理和作業管理。
1.5.1 處理器管理
  1. 處理器管理的功能主要有兩個:中斷處理和進程管理。

-1.1 中斷處理

1).在處理器上運行的指令,根據權限可分為兩種:

1.特權指令:只能被操作系統內核使用的指令,這些指令設計改變機器狀態、修改寄存器內容、啟動設備等敏感操作。

2.非特權指令:所有程序都能使同的指令。

2) 處理器的運行狀態一般分為內核態和用戶態,在內核態下能執行所有指令,在用戶態下只能執行非特權指令。

3)用戶態切換到內核態 3 種方式:系統調用,異常,外圍設備的中斷。3 種方式都通過中斷機制發生。

中斷概念延伸拓展 https://blog.csdn.net/weixin_36278982/article/details/113411238

中斷是指 CPU 對系統發生的某個事件做出的一種反應,它使 CPU 暫停正在執行的程序,保留現場后自動執行相應的處理程序,處理該事件后,如被中斷進程的優先級最高,則返回斷點繼續執行被“打斷”的程序。

引起中斷的事件或發出中斷請求的來源稱為中斷源。

中斷源向 CPU 提出的處理請求稱為中斷請求。

發生中斷時,被打斷程序的暫停點稱為斷點。

中斷概念的另一個發展是訪管(即訪問管理)指令(或系統調用)的使用。

中斷類型 按功能劃分

這種分類法類似于 IBM 360/370 系統的分類法,所有中斷源分為 5 類。

(1)機器故障中斷。它是機器發生錯誤時產生的中斷,用來反映硬件在執行過程中出現的故障,以便進入診斷程序,做出處理。例如,機器電路檢驗錯、電源故障和內存讀數錯,等等。

(2)I/O 中斷。這是來自通道或各種外部設備的中斷,用于反映通道或設備的工作情況。例如,打印機打印結束、磁盤傳輸完成、利用終端進行輸入/輸出等。

(3)外部中斷。它是來自計算機系統外部裝置的中斷,用來反映外界對本系統的要求。例如,計時器到時溢出,操作員操縱控制臺按鈕,在多機系統中它機送來信號,等等。

(4)程序性中斷。這是因錯誤地使用指令或數據而引起的中斷,用于反映程序執行過程中發現的例外情況,例如,非法操作碼,無效地址和運算溢出,等等。

(5)訪管中斷。由于執行“訪問管理程序”指令而產生的中斷,用來使 CPU 的狀態從用戶態轉入管理態,由操作系統根據不同的編號引進不同的處理。這樣,操作系統為用戶態程序提供對系統資源使用請求的服務。

@ 在配置了通道的計算機系統中,用戶程序需要輸人/輸出時,引起的中斷是(訪管-1.2 進程管理

1)進程是計算機中的程序在某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位。

2)進程和程序是兩個既有聯系又有區別的概念。

進程是一個動態的概念,而程序則是一個靜態的概念。進程具有并發特征,程序則沒有;進程有生命期,它只在計算機運行期間才有可能存在,程序可以在外存上長期保存;進程與程序間并不總是一一對應,一個程序執行在不同的數據集上就稱為不同的進程;進程與程序的組成不同,進程實體的組成包括程序、數據和控制塊。

3)為了描述進程的動態變化過程,采用了一個與進程相關聯的進程控制塊(PCB)系統,根據它感知進程的存在。

4) 進程控制塊 是進程存在的唯一標志。

5)線程作為被處理器調度運行的最小單位。

線程被包含在進程之中,一條線程就是進程中一個單一順序的控制流,在一個進程中可以并發多個線程,每條線程并行執行不同的任務。

6)進程的狀態及轉換

3 種基本狀態是:運行態(running),就緒態(ready),等待態(wait):又稱阻塞態(blocked)或睡眠態(sleep)。實際系統中增加兩個進程狀態:新建態(new),終止態(exit)

圖片中的對應關系 要記住!

7)已經獲得除 CPU 以外的所有運行所需資原的進程處于就堵狀態

1.5.2 存儲管理

將用戶源程序變為可在內存中執行的程序步驟:編譯,鏈接,裝入存儲器管理主要功能:內存空間的分配與回收,地址轉換,內存空間的擴充和存儲保護

1.5.3 設備管理

設備管理模塊主要負責處理器內核與外部設備間的數據交互,包括把設備分配給某個請求使用該設備的進程,處理 CPU 和設備間 I/O 通信,響應設備的中斷請求,維護和回收設備等。

1.5.4 文件管理

將負責文件管理的部分稱為文件系統。這部分功能設計文件的邏輯組織和物流組織、目錄結構和管理等常用文件物理結構有順序結構、鏈表結構、索引結構 。。。。P41 還有一些有時間再看

1.5.5 作業管理

作業時用戶在一次計算過程中或一個事務處理中要求計算機系統所作工作的總和,也是用互相計算機系統提交任務的基本單位。包括作業的輸入和輸出,以及作業的調度和控制。一個作業從交給計算機系統到執行結束退出系統,一般經歷提交、后備、執行和完成 4 個狀態

第 2 章 Linux 系統概述

  1. Linus Torvalds 負責開發的 Linux 只是一個內核。內核指的是一個提供設備驅動、文件系統、進程管理、網絡通信等功能的系統軟件,內核并不是一套完整的操作系統,只是操作系統的核心。

  2. Linux 發行版本:Red Hat、Debian Linux、Fedora Core、CentOS、Ubuntu Linux、SuSE Linux、Gentoo Linux、Slackware

  3. 2019 年截止,世界超級計算機 500 強上運行的都是 Linux。安卓系統是基于 Linux 的開源系統,是 Google 公司為移動終端打造的真正開放和完整的移動軟件。亞馬遜云阿里云谷歌云都部署在 Linux 系統上。人工智能和區塊鏈的底層也都是 Linux。

第 3 章 Linux 系統使用基礎

3.3 常用 Linux 命令

3.3.1. Linux 命令的基本格式

“開始“菜單中選擇應用程序-附件-終端,打開 shell,看到命令提示符:

[root@localhost ~]#

root:當前的登陸用戶

localhost:當前系統的簡寫主機名(完整名 localhost.localdommain)

~:用戶當前所在目錄

#:命令提示符,如果是超級用戶#,提示符是#;普通用戶,提示符是$

家目錄又稱為主目錄,用戶在登陸后,要有一個初始登錄位置,這個位置就成為用戶的家,

超級用戶的家目錄為/root,普通用戶的家目錄為/home/用戶名。初始登錄狀態下,用戶創建的文件都放入家目錄。切換目錄的命令是 cd。

Linux 命令的基本格式是

[root@localhost ~]# 命令 [選項] [參數]

Linux 選項又分為短格式選項(-l),為英文簡寫和長格式選項(–all),為完整英文單詞命令的選項用于調整命令的執行方式,而命令的參數是這個命令的操作對象。

3.3.2. Linux 簡單命令
w 和 who 命令

二者都可查看服務器上目前已登陸的用戶信息,區別是 w 命令除了能知道目前已登陸的用戶信息,還可知道每個用戶執行任務的情況。

w 命令基本格式:

[root@localhost ~]# w [選項] [用戶名]

w 命令后只跟用戶名,表示只顯示此用戶的信息

-h 不顯示輸出信息的標題

-l 用詳細格式輸出

-s 用簡潔格式輸出

who 命令基本格式:

[root@localhost ~]# who [選項] [file]

若無指定文件,則 who 命令默認通過/var/run/utmp 文件來獲取登陸用戶信息

-a 列出所有信息,相當于所有選項

-b 列出系統最近啟動時間

-l 列出所有可登錄的終端信息

-m 僅列出當前終端的信息,相當于 who am I

-r

-s 僅顯示名稱線路和時間字段信息,是 who 命令的默認選項

-u

echo 命令

可將命令行中的參數顯示到標準輸出(屏幕)上,命令格式:

[root@localhost ~]# echo [選項] [輸出內容]

-n 取消輸出后行末的換行符號(內容輸出后不換行)

-e 支持反斜線控制的字符轉換

-e 選項支持控制字符:

\ 輸出\本身

\a 輸出警告音

\b 退格鍵,向左刪除鍵

\c 取消輸出行末的換行符,和-n 一樣

\e Esc 鍵

\f 換頁符

\n 換行符

\r 回車鍵

\t 制表符,就是 Tab 鍵

\v 垂直制表符

\0nnn 按八進制 ASCII 碼表輸出字符

\xhh 按十六進制 ASCII 碼表輸出字符

date 命令

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

[root@localhost ~]# date -s 可以設定當前時間,只有 root 權限才能設置

passwd 命令

密碼配置指令,基本格式如下

[root@localhost ~]# passwd [選項] 用戶名

普通用戶僅能修改自己的密碼,超級用戶 root 可以修改自己和普通用戶的密碼。

普通用戶修改自己的密碼需要先輸入自己的舊密碼,超級用戶不用。

3.4 軟件包

Linux 的軟件包可細分為兩種:源碼包和二進制包。

Linux 常用打包壓縮格式“tar.gz”,因此源碼包又被稱為 Tarball,Tarball 是一款打包工具。

兩大主流的二進制包管理系統:RPM 包管理系統,DPKG 包管理系統。

3.5 軟件安裝、運行與卸載

3.5.1 RPM 包安裝、卸載和升級

RPM 包默認安裝路徑,最好不要手動指定安裝路徑

/etc/

/usr/bin/

/usr/lib/

/usr/share/doc/

/usr/share/man/

安裝 RPM 包的命令格式:

[root@localhost ~]# rpm -ivh 包全名;涉及包全名的命令,一定要注意路徑

此命令中各選項參數的含義為:

-i 安裝(install)

-v 顯示更詳細的信息(verbose)

-h 打印,顯示安裝進度(hash)

命令還可以一次性安裝多個軟件包,僅需空格隔開,如下:

[root@localhost ~]# rpm -ivh a.rpm b.rpm c.rpm

安裝完成后,可嘗試啟動:

[root@localhost ~]# service 服務名 start |stop |restart |status

各參數含義:啟動服務|停止服務|重啟|查看狀態

RPM 包的升級:

[root@localhost ~]# rpm -Uvh 包全名

-U 若該軟件沒安裝過則直接安裝,若已安裝則升級至最新版本。

[root@localhost ~]# rpm -Fvh 包全名

-F 若該軟件沒有安裝,則不會安裝,必須安裝較低版本才能升級。

RPM 包的卸載要考慮包之間的依賴性,如先安裝 httpd 軟件包,后安裝 httpd 的功能模 mod_ssl 包,那么卸載時,必須先卸載 mod_ssl 包,然后卸載 httpd,否則會報錯。

卸載命令格式:

[root@localhost ~]# rpm -e 包名

-e 卸載,erase,卸載命令支持“-nocteps”選項,既可以不檢測依賴性直接卸載,但不推薦軟件包的查詢

[root@localhost ~]# rpm 選項 查詢對象

-q 包名 ,表示查詢是否安裝,querry

-qa 查詢所有已安裝軟件包,可以用管道符查找出需要的內容,如

[root@localhost ~]# rpm -qa | grep httpd,采用這種方式可以找到含有包名的所有軟件包。

-qi 包名, 查詢軟件包的詳細信息,-i 表示查詢軟件信息,information。

-qip 包全名,

-p 表示查詢未安裝的軟件包,package。未安裝的軟件包需使用“絕對路徑+包全名”的方式才能確定。

-ql 包名, 查詢已安裝軟件包中包含的所有文件及各自安裝位置。

-l 表示列出軟件包所有文件的安裝目錄。

-qlp 包全名,未安裝軟件包中包含的所有文件以及打算安裝的路徑。

還支持反向查詢,查詢文件屬于哪個 RPM 軟件包:

[root@localhost ~]# rpm -qf 系統文件名

-f 查詢文件所屬那個軟件包,file。只有使用 RPM 安裝的文件才能使用該命令,手動方式建立的文件無法使用

-qf /bin/ls

-qR

-qRp

P93

第4章 shell 腳本編程基礎

4.1 shell 編程概述

  1. shell 本身是一個用 C 語言編寫的程序,是連接 用戶 和 UNIX/Linux 內核 的橋梁。

  2. #!/bin/bash , “#!” 說明該腳本使用哪種 shell 編寫的,通常放在腳本第一行,從而調用相應的解釋程序予以執行

  3. #是當行注釋符,表示這是一行注釋。注釋行用來說明程序的功能、結構、算法和變量的作用等,增加程序的可讀性。

  4. Linux 中,創建文件默認是不可執行的文件,需要修改文件的權限,為文件增加可執行權限,后在命令行模式下直接輸入該文件的相對路徑 ./文件名,即可運行

[root@localhost ~]# touch 文件名,創建一個新文件。

  1. [root@localhost ~]# cat /etc/shell,可以看到 shell 的種類

  2. 命令和用戶的可行性腳本文件是否能夠執行,與環境變量 PATH 有關環境變量 PATH 的值的作用是 決定了 shell 將到哪些目錄中尋找命令或可執行程序,當用戶運行一個命令或可執行程序時,在這些目錄下按照順序依次搜尋

  3. 腳本運行 3 種方式:腳本權限設置為可執行,在提示符下直接運行;將腳本名作為參數傳遞給 shell 程序;將腳本以輸入重定向的方式傳遞給 bash. P97

4.2 shell 基礎

4.2.1 通配符

文件名的擴展稱為通配(Globbing)

* 匹配任意字符 0 次或多次出現

?匹配任意單個字符

[ ] 匹配該字符組所限定的任何一個字符

[ ^ ] 或 [ ! ] 匹配不在該字符組中的任何一個字符

{ string1,string2,……} 匹配其中一個指定的字符串

4.2.2 引號

關于轉義字符“\”,按下轉義字符前,遇特殊字符,按特殊含義執行,按下轉義字符后,按

普通含義執行。

shell 中引用字符有 3 種:單引號,雙引號和倒引號。

  1. 單引號引用一串字符,所有字符都是普通字符
  2. 雙引號引用一串字符,但保留 “$” ”\” 和倒引號 “ ` ” 的特殊含義。

$ 代表引用變量的值, 倒引號代表引用命令

  1. 倒引號引用一串字符,被 shell 解釋為命令行,shell 會先執行該命令,并以其輸出結果取代整個倒引號部分
4.2.3 輸入/輸出重定向符

輸入/輸出方向就是數據的流動方向。

  1. 標準輸入重定向

1.1 command<file 將文件作為命令的輸入

[root@localhost ~]# wc -l<file 表示統計 file 文件中有多少行文本

1.2 command<<分界符 從標準輸入中讀入,直到遇見分界符才停止。使用特定的分界符作為命令輸入的結束標志,而不使用默認的 Ctril+D 組合鍵。

  1. 標準輸出重定向

2.1 command>file 以覆蓋的方式,把 command 的正確輸出結果輸出到 file 文件

[root@localhost ~]# cat file1 file2>file3 . 這種方式將命令的輸出寫到文件時,這個文件可以存在也可不存在,不存在就自動創建,存在則原文件內容將被覆蓋。

2.1 command>>file 以追加的方式,把 command 的正確輸出結果輸出到 file 文件

  1. 文件描述符

輸出重定向的完整寫法是 fd>file, fd>>file,fd 表示文件描述符,file descriptor。不寫默認為 1.

標準輸入 stdin , 0;標準輸出 stdout, 1;錯誤輸出 stderr, 2;

如:

grep li si file: si 和 file 被視作兩個文件名,查找 li若需要把正確和錯誤信息都保存在一個文件中,應這樣寫:ying@ying-virtual-machine:~/one$ grep li si file >file1 2>& 12>& 之間不允許有空格,fd> 間不允許有空格若既不想把結果保存到文件中,也不想顯示到屏幕上,可以把結果重定向到/dev/null 文件中,/dev/null 視作 Linux 系統的垃圾箱,數據都會被丟棄,不能恢復。

4.2.4 命令執行操作符
  1. 順序執行使用“;”連接多條命令,這些命令會依次執行。

  2. 邏輯與“&&”連接,這些命令之間就有邏輯關系。只有第一條命令正確執行了,&&連接的第二條

命令才會執行。

  1. 邏輯或“||”連接多條命令,則只有前一條命令執行錯誤,后一條命令才能執行。
4.2.5 小括號和大括號

當用戶啟動 shell 時,這個 shell 是 __ 交互__ 的,當它執行完第一條命令后,接著顯示另一個提示符,始終在前臺等待用戶。還有一種 shell 是 __ 非交互__ 的,當在交互 shell 中運行一個外部命令或者執行一個腳本時,交互 shell 會創建一個子 shell,運行結束后子 shell 進程結束。

小括號()和大括號{}都可以將若干命令括起來,組合在一起,邏輯上視為一條命令。后臺進程在運行過程中與用戶無交互,無交互是指 不響應用戶的輸入和終端控制信號 ,在后臺運行的命令一樣會將結果輸出到顯示器上。

第 5 章 用戶管理

5.1 用戶與用戶組管理

  1. 用戶名和 ID 的對應關系存儲在/etc/passwd 文件中。
  2. 在默認情況下,管理員創建一個用戶,就會在 /home 目錄下創建一個用戶主目錄。
  3. 存放用戶密碼信息的目錄是 /etc

5.2 用戶和用戶組管理相關的文件

  1. 用戶基本信息:/etc/passwd 文件的權限是 rw-r–r– ,用戶密碼信息:/etc/shadow 文件的權限是 rw-------_ 。

5.3 用戶和用戶組管理的命令

5.3.1 用戶的添加

[root@localhost ~]# useradd [ 選項 ] 用戶名

從創建的過程,系統讀取 /etc/login.defs 和 /etc/default/useradd,根據這兩個配置文件中定義的規則添加用戶,在/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow 文件中添加用戶數據;然后系統會自動在/etc/default/useradd 文件設定的目錄下建立用戶主目錄;

最后復制/etc/skel 目錄中的所有文件到此主目錄中。由此,一個新的用戶創建完成了。

/etc/passwd 系統用戶配置文件,存儲了系統中所有用戶的基本信息,所有用戶都可對此文件執行讀操作。

文件中每行用戶信息劃分為 7 個字段

用戶名:密碼:UID:GID:描述性信息:主目錄:默認 shell

用戶名字符串,密碼 x 表示設有密碼,真正密碼保存在/etc/shadow;

UID 取值范圍 0-65535,某些情況下允許用戶存在多個擁有不同用戶名但 UID 相同的用戶;

GID 初始組只能一個,附加組可以多個。UID 在 1-499 供系統程序使用的用戶,普通用戶UID 從 500 開始。

主目錄,用戶登錄后有操作權限的訪問目錄,root 超級管理員賬戶的主目錄為/root,普通用戶主目錄為/home/UID,即在/home 下建立和用戶名相同的目錄作為主目錄。

默認 shell:/bin/bash

5.3.2 密碼配置命令

passwd [選項] 用戶名

普通用戶只能使用 passwd 命令修改 自己的 密碼,而不能修改其他用戶的 的密碼。超級用戶 root 既可以使用 passwd 命令修改 自己的 密碼,也可以修改 其他用戶的 的密碼

5.3.3 修改用戶信息命令

[root@localhost ~]# usermod [ 選項 ] 用戶名

-L 臨時鎖定用戶 Lock

-U 解鎖用戶 Unlock

5.3.4 修改用戶密碼狀態命令

[root@localhost ~]# change [ 選項 ] 用戶名

5.3.5 刪除用戶命令

[root@localhost ~]# userdel -r 用戶名,只用 root 用戶才能用

-r 表示在刪除用戶的同時刪除用戶的家目錄。

用戶個人文件:主目錄默認位于 /home/用戶名;郵箱位于 /var/spool/mail/用戶名。

5.3.7 用戶間切換命令

[root@localhost ~]# su [ 選項 ] 用戶名

-:當前用戶不僅切換為指定用戶的身份同時所用的工作環境也切換(包括 PATH 變量、

MAIL 變量等),使用-選項可省略用戶名,默認切換為 root 用戶。環境變量是用來定義操

作系統環境的,因此若系統環境沒有隨用戶身份切換,很多命令無法正確執行。

沒有-的話,則是臨時切換。

使用 su 命令時,有-和沒有-是完全不同的,- 選項表示 _ 在切換用戶身份的同時,將當前

使用的環境變量也切換成指定用戶的

5.3.8 用戶組管理命令

添加用戶組

[root@localhost ~]# groupadd [ 選項 ] 組名

修改用戶組相關信息

[root@localhost ~]# groupmod [ 選項 ] 組名

刪除用戶組(群組)

[root@localhost ~]# groupdel 組名,僅適用于刪除那些不是任何用戶初始組的組

為了避免系統管理員 root 太忙,無法及時管理組,可以給組設置組管理員,代替 root 完成

將用戶加入或移出組的操作。

[root@localhost ~]# gpasswd [ 選項 ] 組名

選項為空時,表示給組設置密碼,僅 root 用戶可用

-a user : 將 user 用戶加入組

-d user: 將 user 用戶從組移除

第 6 章 文件管理

6.1 文件系統

  1. 文件:文件系統中存儲數據的一個命名對象,是用戶中最小的邏輯存儲單元。
  2. Linux 操作系統中,所有的文件和目錄都被組織成從一個 根節點“/” 開始的倒置的樹狀結構。文件系統 __ 按名_ 訪問文件。
6.1.2 文件結構和類型
  1. 文件是 Linux 系統處理信息的基本單位,所有軟件都組織成文件。所有文件都由兩部分組成,數據項和文件控制塊。文件控制塊被稱為索引節點。

  2. 根據文件數據項是否具有結構,可將文件分為兩大類:無結構文件(即字符流文件)和有結構文件(如目錄文件)。但通常情況下,Linux 文件類型被劃分為普通文件、目錄文件、鏈接文件及設備文件。

  3. 說明目錄或文件名位置的方法有兩種,分別使用 _ 絕對路徑__ 和 __ 相對路徑_ 。前者指的是從根目錄(/)開始寫起的文件或目錄名稱,而后者則指的是相對于當前路徑的文件或目錄名稱。

6.2 文件與目錄操作

6.2.1 文件操作命令
  1. concatenate 連接、連續

[root@localhost ~]# cat [ 選項 ] 文件名 , 顯示文件內容

-n 對輸出的所有行進行編號-b 只對非空行進行編號

或者

[root@localhost ~]# cat 文件 1 文件 2 > 文件 3,連接合并文件,file3 原內容會被覆蓋,若

file3 不存在會自動創建。

  1. 分頁顯示文本文件內容

[root@localhost ~]# more [ 選項 ] 文件名 ,

  1. 顯式指定文件的前若干行內容

[root@localhost ~]# head [ 選項 ] 文件名

-n k : k 表示行數,用來顯示文件前 k 行的內容。

不設置顯示的具體行數,則默認顯示 10 行的文本數據。4

  1. 查看文件末尾的數據

[root@localhost ~]# tail [ 選項 ] 文件名

-n k : k 表示行數,用來顯示文件后 k 行的內容。

-k: 同上

-f : 用來監聽文件的新增內容,若想中止按 Ctrl+C 鍵

  1. 創建文件,修改文件時間參數

[root@localhost ~]# touch [ 選項 ] 文件名

-a:只修改文件訪問時間 P171

  1. grep 命令

global regular expressions print在一個或多個文件中搜索某一特定的字符模式(即正則表達式),此模式可以是單一的字符、字符串、單詞或句子。正則表達式是描述一組字符串的一個模式,可以是一些純文本文字,也可以是用來產生模式的一些特殊字符。正則表達式中包含一些特殊字符,與通配符含義不同。

c* 將匹配 0 個或多個字符 c(

c 為任一字符)

.: 將匹配任何一個字符,且只能是一個字符。

[xyz]:匹配方括號中任意一個字符。

[^xyz]:匹配出方括號中字符外的所有字符。

^:行首定位符。

$:行尾定位符。

[root@localhost ~]# grep [ 選項 ] 模式 文件名

-n 在每一行的最前面列出行號

  1. sed 命令

主要用來自動編輯一個或多個文件,簡化對文件的反復操作,編寫轉換程序等。

[root@localhost ~]# sed [ 選項 ] sed 命令 文件名

選項:

-n:只顯示匹配處理的行

-e:執行多個編輯命令時使用(一般用“;”代替)

-i:直接在文件中進行修改,而不是輸出到顯示器。

-f:從腳本文件中讀取內容并執行(文件中的編輯命令每行一個,不用“;”隔開)

sed 常用編輯命令:

p:打印匹配行 print

d:刪除指定行 deletea:在匹配行后面追加 append

i:在匹配行前面插入 insert

c:整行替換

r:讀取文件的內容

w:將文本寫入文件

s:字符串替換(匹配正則表達式)substitution

  1. awk 命令

更適合格式化文本,對文本進行較復雜的格式處理

[root@localhost ~]# awk [ 選項 ] ‘匹配規則|執行命令|’ 文件名

awk 的主要特性之一是其較強的處理文本文件中數據的能力,它會自動給一行中的每個數

據元素分配一個變量。默認情況下,將如下變量分配給它在文本行中發現的數據字段:

$0:代表整個文本行

$1:代表文本行中的第 1 個數據字段

$2:代表文本行中的第 2 個數據字段

$n:代表文本行中的第 n 個數據字段

在 awk 中默認字段分隔符是任意的空白字符,如空格或制表符。讀取一行文本時,會用預

定于的字段分隔符劃分每個數據字段。若要采用其他字段分隔符的文本,可以用-F 選項手

動指定。

[root@localhost ~]# awk ‘{print $1}‘ file

[root@localhost ~]# awk ‘BEGIN {print “The File Contents:“}> {print $0} END {print”End of

File”}‘ file

  1. cp 命令

復制文件和目錄,借助某些選項,還可復制整個目錄

[root@localhost ~]# cp [選項] 源文件 目標文件

-a:相當于-d、-p、-r 選項的集合

-d:若源文件為軟鏈接(對硬鏈接無效),則復制的目標文件也為軟鏈接

-i:詢問,若目標文件已經存在,則會詢問是否覆蓋

-l:把目標文件建立為源文件的硬鏈接文件,而不是復制源文件

-s:把目標文件建立為源文件的軟鏈接文件,而不是復制源文件

-p:復制后目標文件保留原文件的屬性

-r:遞歸復制,用于復制目錄

目標表文件必須是目錄。

把源文件不改名復制到/tmp/目錄下:

[root@localhost ~]# cp file /tmp/

若需改名復制,如下:

[root@localhost ~]# cp file /tmp/text

提示是否覆蓋:

[root@localhost ~]# cp -i file /tmp/text

  1. rm 命令

永久性刪除文件系統

[root@localhost ~]# rm [選項] 文件或目錄

-f:強制刪除 force

-i:刪除前詢問

-r:遞歸刪除,主要用于刪除目錄,可刪除指定目錄及包含的所有內容。9. mv 命令

可在不同目錄間移動文件或目錄,也可對文件和目錄進行重命名。

[root@localhost ~]# mv [選項] 源文件 目標文件

-f:強制覆蓋

-i:交互移動,若目標文件已經存在,詢問用戶是否覆蓋(默認選項)

-n:若目標文件已經存在,則不會覆蓋移動,而且不詢問用戶。

-v:顯示文件或目錄的移動過程。

-u:若目標文件已經存在,兩者相比,源文件更新,則會對目標文件進行升級。

  1. sort 命令

排序命令。ASCII 碼值進行比較,升序輸出。

-r 反向排序。

  1. wc 命令 統計

-l:只統計行數

-w:只統計單詞數

-m:只統計字符數

6.2.2 目錄操作命令
  1. mkdir 命令 make directories

-m 用于手動配置所創建目錄的權限,而不再使用默認權限。

-p 遞歸創建所有目錄。

自定義目錄權限

  1. rmdir

-p 遞歸刪除空目錄

  1. cd 命令

change directory 切換工作目錄。

特殊符號
:代表當前登錄用戶的主目錄

- :代表上次所在目錄

. :代表當前目錄

:代表上級目錄

cd ~ 命令的含義是 回到用戶的(主)家目錄

4.pwd 命令

print working directory 顯示當前所在的目錄。

5.ls 命令

顯示當前目錄下的內容。

不使用任何選項時,默認只會顯示非隱藏文件的名稱,并以文件名進行排序。

-a 顯示全部的文件,包括隱藏文件。(開頭為”.”的文件)

6.ln 命令

ln [選項] 源文件 目標文件

-s:創建軟鏈接文件,不加則創建硬鏈接文件

硬鏈接:不是是修改源文件還是硬鏈接,另一個文件數據都會發生改變;硬鏈接不能跨文件系統(分區)建立,不能鏈接目錄。

軟鏈接:相當于快捷方式,可跨分區,可鏈接目錄。

使用 ln 命令生成了一個指向文件 old 的符號鏈接 new,如果將文件 old 刪除,不可能再訪

問文件中的數據

6.3 訪問權限管理

可以使用 ls 命令查看文件和目錄的權限信息,ls -al

6.3.2 權限位

文件權限有 3 種,對文件的讀,寫和執行權限。每行第一列為權限,一共 10 位,第 1 位表

示文件的具體類型。

6.3.2 修改權限位的命令
  1. chmod 命令

權限與數字對應關系: r -4,w -2,x -1

使用數字修改文件權限的命令格式:

chmod 權限值 文件名

若加選項 -R 表示連同子目錄中的所有文件,也都修改為設定的權限。

文件的基本權限就是 3 種用戶身份,所有者 u,所屬組 g 和其他人 o 。a 代表全部的身份。

chmod go+/-/=rwx

  1. umask 命令

使用 umask 默認權限來給所有新建的文件和目錄賦予初始權限。

直接通過 umask 命令得知默認權限的值!

默認是 0022,第 1 個數代表的是文件所具有的特殊權限,后 3 位才是要用到的 umask 值,

轉變為字母形式是----w–w-。

文件和目錄的真正初始權限可通過以下計算得到:

文件(或目錄)的初始權限=文件(或目錄)的最大默認權限-umask 權限

Linux 系統中,文件的最大默認權限為 666,即 rw-rw-rw-。

目錄的最大默認權限是 777,即 rwxrwxrwx。

注:用字母形式做減法!最大默認權限中 和 umask 權限公共的部分,通過減法運算被遮蓋

掉,剩下的最大默認權限,才是最終賦予文件目錄的初始權限。如 666-033=644

  1. chown 命令

用于修改文件(或目錄)的所有者。基本格式:

chown 所有者 文件或目錄

-R 表示連同子目錄中的所有文件都更改。

若要同時更改所有者和所屬組

chown 所有者:所屬組 文件或目錄

  1. chgrp 命令

用于修改文件(或目錄)的所屬組。

chgrp 所屬組 文件名(目錄名)

第 7 章 進程管理

有 3 個作用:1.判斷服務器的健康狀態;2.查看系統中所有進程;3.殺死進程

7.2 進程監控

  1. ps 命令

缺乏時效性最常用進程監控命令,可查看系統中所有運行進程的詳細信息。

-a:顯示一個終端的所有進程(除會話引線外)

-u:顯示進程的歸屬用戶及內存的使用情況

-x : 顯示沒有控制終端的進程

-l :以長格式顯示更加詳細的信息

-e:顯示所有進程

建議記憶幾個固定選項:

ps-aux :可以查看系統中所有的進程

ps-le : 可以查看系統中所有的進程,而且還能看到進程的父進程 PID 和進程優先級。

ps-l :只能看到當前 shell 產生的進程。

僵尸進程:一般是由于進程非正常停止或程序編寫錯誤,因此子進程先于父進程結束,而

父進程又沒有正確地回收子進程,從而子進程一直存在內存中。

  1. pstree 命令

以樹形結構顯示程序和進程之間的關系

  1. top 命令

可以動態地持續監聽進程的運行狀態。還提供了一個交互界面,用戶可根據需要,人性化

地定制自己的輸出,進而更清楚地了解進程的運行狀態。

top 的輸出內容是動態的,默認每隔 3 秒刷新一次。

緩存是在讀取硬盤中數據時,把最常用的數據保存在 內存 的緩存區中,再次讀取該數據時,

就不去 硬盤中 讀取了,而在 緩存 中讀取;緩沖是在硬盤寫入數據時,先把數據放入 緩沖

區,然后再一起向硬盤寫入,把 分散的寫操作 集中進行,減少磁盤碎片和硬盤的反復尋道,

從而提高系統性能。

設置緩存是為了加快數據從硬盤讀取的速度,而設置緩沖是為了加快數據寫入硬盤的速度。

  1. lsof 命令

ps 命令可以查詢到系統中所有的進程,可以進一步知道這個進程到底在調用哪些文件。

list opened files

-c 字符串:只列出以字符串開頭的進程打開的文件。

-p PID:列出 PID 所指的進程打開的文件。

7.3 結束進程

進程的管理主要是指進程的關閉與重啟。進程的關閉要依賴進程的信號。系統中可以識別

的信號較多,可以使用命令“kill-l”來查詢。

常見的進程信號

1:sighup 是進程立即關閉,重新讀取配置文件之后重啟

9:sigkill 立即結束程序的運行;本信號不能被阻塞、處理和忽略;一般用于強制終止進程

15:sigterm 正常結束進程的信號,kill 命令的默認信號;如果進程已經發生了問題,那么

這個信號是無法正常結束進程的,這是可以嘗試 sigkill 信號 9.

在使用 kill 命令來終止一個很消耗資源的進程的時候,最合適的信號值是 9。

7.4 進程優先級

在 Linux 系統中,有 2 個參數表示進程優先級:PRI 和 NI。priority,nice。數值越小代表該進程越優先被 CPU 處理。不過,PRI 值是由內核動態調整的,用戶不能直接修改。只能通

過修改 NI 值來影響 PRI 值,間接地調整進程優先級。

PRI 和 NI 的關系:PRI(最終值)=PRI(原始值)+NI。

NI 值越小,進程的 PRI 就會越小,該進程就越優先被 CPU 處理。

修改 NI 值時有幾個注意事項:

  1. NI 范圍是-20~19.
  2. 普通用戶調整 NI 值的范圍是 0~19,而且只能調整自己的進程。
  3. 普通用戶只能調高 NI 值,而不能調低。
  4. 只有 root 用戶才能設定進程 NI 為負值,而且可以調整任何用戶的進程。

默認情況下,進程的 NI 值為 0。進程的 NI 值可以通過 nice 命令和 renice 命令修改,進而

調整進程的運行順序。

nice 命令可以給要啟動的進程賦予 NI 值,但不能修改已運行進程的 NI 值。

[root@localhost ~]# nice [ -n NI 值] 命令

renice 命令可以在進程運行時修改其 NI 值,從而調整優先級。

[root@localhost ~]# renice [優先級] PID

第 8 章 存儲管理

8.1 存儲設備的查看

從存儲數據的介質上來區分,硬盤可分為機械硬盤(hard disk drive,HDD)和固態硬盤(solid state disk,SSD),機械硬盤采用磁性碟片存儲數據,固態硬盤通過閃存顆粒存儲。

機械硬盤的邏輯結構主要分為磁道、扇區和柱面。以下幾種,IDE(Integrated DriveElectronics,電子集成驅動器)硬盤接口;SATA(

Serial ATA,串口)接口;SCSI(Small Computer System Interface,小型計算機系統接口)。

扇區是磁盤的最小存儲單位。

固態硬盤和機械硬盤最大的區別就是不再采用盤片存儲數據,而采用存儲芯片存儲數據。

固態硬盤低能耗、無噪聲、抗震動、低散熱、體積小和速度快的優勢;價格更高,使用壽命有限。

8.1.2 硬盤識別
8.1.3 存儲設備的掛載

掛載指的是將硬件設備的 文件系統 和 Linux 系統中的文件系統,通過 指定目錄(作為掛載點) 進行關聯。而將文件系統掛載到 Linux 系統上,需要使用 mount 掛載命令。

為了能夠把新建立的文件系統裝載到系統目錄中,還需要指定該文件系統在整個目錄結構中的位置,稱為掛載點。

所有的硬件設備必須 掛載之后才能使用,有些硬件設備(比如硬盤)在每次系統啟動時會, 自動掛載。而有些(比如 U 盤、光盤)則需要 手動掛載。

  1. mount 命令

[root@localhost ~]# mount -l

單純使用 mount 命令,會顯示出系統中已掛載的設備新寧縣。使用-l,會額外顯示出卷標名稱。

[root@localhost ~]# mount -a

自動檢查/etc/fstab 文件中有無因疏漏而未被掛載的設備文件,若有則進行自動掛載操作。

/etc/fstab 文件為自動掛載文件,系統開機時會主動讀取文件內容,根據文件配置,系統會自動掛載指定設備。

[root@localhost ~]# mount [-t 系統類型] [-L 卷標名] [-o 特殊選項] [-n]設備文件名 掛載點

-t 系統類型:指定欲掛載的文件系統類型。常見的支持類型有 EXT2、EXT3、EXT4、iso9660、vfat、reiserfs 等。

-L 卷標名:除了使用設備文件名(如/dev/hdc6)之外,還可以利用文件系統的卷標名稱進行掛載。

-n:默認情況下,系統會將實際掛載的情況實時寫入/etc/mtab 文件中。但在某些場景下

(如單人維護模式),為避免出現問題,會刻意不寫入,此時就需要使用這個選項。

-o 特殊選項:可以指定掛載的額外選項,如讀/寫權限,同步/異步等。

卸載使用 umount 命令

  1. 掛載光盤

建立掛載點目錄:

[root@localhost ~]#mkdir /mnt/cdrom/

掛載命令

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/S

  1. 掛載 U 盤

光盤的設備文件名是固定的(

/dev/sr0 或/dev/cdrom),U 盤的設備文件名是在插入 U

盤后系統自動分配的。

先以 root 用戶身份登錄,通過使用 fdisk 命令查看到 U 盤的設備文件名:

[root@localhost ~]# fdisk -l

假若 U 盤是 sda1,接下來要創建掛載點,在目錄/mnt 下建立文件夾/usb:

[root@localhost ~]# mkdir /mnt/usb

然后掛載:

[root@localhost ~]# mount -t vfat /dev/sda1 /mnt/usb/

  1. 自動掛載

若想實現開機自動掛載某個硬件設備,使用 root 身份在/etc/fstab 文件中添加此設備即

可。

8.2 分區管理

Linux 中分區命令 fdisk 和 parted。fdisk 較常用,但不支持大于 2TB 的分區。大于 2TB 使用parted 命令,parted 也能分配較小的分區。

8.2.1 fdisk 命令

查詢本機可以識別的硬盤和分區:

[root@localhost ~]# fdisk -l

給硬盤分區:

[root@localhost ~]# fdisk 設備文件名

不要在當前的硬盤上嘗試使用 fdisk,這會完整刪除整個系統。

建立主分區的過程:fdisk 硬盤名—n(新建)—p(建立主分區)—l(指定分區號)—按Enter 鍵(默認從柱面 1 開始建立分區)—+5G(指定分區大小)。當然,分區還沒有格式化和掛載,還不能使用。

主分區和擴展分區加起來最多只能建立 4 個,擴展分區最多只能建立 1 個。

所有的分區在建立過程中如果不保存就退出,是不會生效的。使用 q 命令不保存退出,使用 w 命令,保存退出。若不想重新啟動系統可以使用 partprobe 命令,作用是讓系統內核重新讀取分區表信息。

8.2.2 parted 命令

parted 命令是可以在命令行直接分區和格式化的,parted 交互模式才是更加常用的命令方式,進入交互模式命令:[root@localhost ~]# parted 硬盤設備文件名在 parted 等待輸入交互命令的位置輸入 help,可看到在交互模式下支持的所有命令。

分區完成后,需要進行格式化。使用 parted 交互命令格式化,則只能格式化成 ext2 文件系統。需要使用 mkfs 命令(不是 parted 交互命令中的 mkfs,而是系統命令 mkfs)。parted命令還可以調整分區的大小。

parted 所有的操作都是立即生效的!!

8.3 磁盤管理工具

8.3.1 df 命令

用于顯示 Linux 系統中個文件系統的硬盤使用情況,包括文件系統所在硬盤分區的總容量、已使用的容量、剩余容量等。與整個文件系統有關的數據都保存在超級塊(Super Block).

[root@localhost ~]# df [選項] [目錄或文件名]

-a:顯示所有文件系統信息,包括 Linux 系統特有的/proc、/sysfs 等文件系統。

-h:使用人們習慣的 MB 或 GB 等單位自行顯示容量。

-i:不顯示硬盤容量,而顯示 inode 的數量。

無選項默認將系統內文件系統信息 KB 為單位顯示出來。

df 命令后添加目錄名,會自動分析該目錄所在的分區,并將所在分區的有關信息顯示出來。

8.3.2 du 命令

統計目錄或文件所占磁盤空間容量的命令。

[root@localhost ~]# du [選項] [目錄或文件名]

-a:顯示所有子目錄和子文件的磁盤占用量。

-h:使用習慣單位顯示磁盤占用量

-s:統計總磁盤占用量,而不列出子目錄和子文件的從磁盤占用量。

不帶選項為統計當前目錄的總磁盤占用量,同時會統計當前目錄下所有子目錄的磁盤占用量,不統計子文件,默認單位 KB。

當刪除一個文件時,不是馬上就在文件系統中消失,當所有程序都不用該文件時,才會根據操作系統的計算規則釋放已經刪除的文件空間。

df 命令能看到已經刪除的文件,計算大小的時候,把這一部分的空間也加上了,因此更精確。

8.3.3 fsck 命令

檢查文件系統并嘗試修復出現的錯誤。

[root@localhost ~]# fsck [選項] 分區設備文件名

-a:自動修復文件系統,沒有任何提示信息。

-r:交互式修復模式,修改文件前會進行詢問,讓用戶確認并決定處理方式。

fsck 命令修復磁盤分區以后,若發現分區中有文件丟失,可以到對應的“lost+found”目錄中去查找,但由于無法通過文件名稱分辨各個文件,可利用 file 命令查看文件系統類型,進而判斷哪個是用戶需要的文件。

8.4 磁盤陣列

第 9 章 設備管理

9.1 設備文件

Linux 中,用戶是通過文件系統與設備連接的。每個設備都是在其驅動程序控制下運行的,驅動程序則與/dev 目錄下的特殊文件聯系在一起,在選擇設備或者操作設備時都以這個文件的名稱來代表這一設備。

Linux 系統采用___設備文件___ 統一管理硬件設備,從而將硬件設備的特性及管理細節對用戶隱藏,實現用戶程序與設備無關性。從用戶的角度來看;對設備的使用和一般文件的使用一樣。

設備的命名規則:在/dev 目錄下,每一個驅動器以一個單獨的設備文件來表現;設備的文件名一般由兩部分組成,第一部分是 主設備號 ,第二部分是 次設備號 。主設備號代表設備的類型,如 hd 表示 IDE 硬盤,sd 表示 SCSI 硬盤,tty 表示終端設備等;次設備號代表同類設備中的序號,如 IDE 硬盤一般可以有 4 個,即/dev/hda、/dev/hdb、/dev/hdc、/dev/hdd,a 代表第一個設備,hda1 中的”1”代表 had 的第一個硬盤主分區,以此類推。

SCSI 硬盤就是/dev/sda、/dev/sdb 等。fd 是軟盤,設備名稱是/dev/fd0。Linux 系統中,磁帶機的設備名是/dev/st和/dev/nst,其中 nst是指操作完成后不自動回卷磁帶,st自動回卷磁帶,常用 nst*。主機 SCSI 總線上找到的第一個磁帶機是 nst0 或 st0,第二個是 nst1 或st1,依此類推。磁帶機的 SCSI 號越小,其設備名也就越靠前。一臺主機上可以有多塊硬盤,系統采用 a~p 來代表 16 塊不同的硬盤,硬盤的分區編號規則:主分區或擴展分區的編號從 1 開始,到 4 結束;邏輯分區從編號 5 開始。

硬盤設備有大量的扇區組成的,第一個扇區最重要,里面保存著主引導記錄與分區表信息。主引導記錄(信息) 需要占用 446 字節,分區表為 64 字節,結束符占用 2 字節;跟去表中沒記錄一個分區信息就需要 16 字節,最多只有 4 個分區信息可以寫到第一個扇區中,這 4 個分區就是 4 個主分區。

/dev/null 文件是空設備,等價于一個只寫文件,所有寫入它的內容都會永遠丟失。讀取數據返回為空。

/dev/zero 也是一個偽文件,是一個輸入設備。主要用處是創建一個指定長度的初始化空文件。

/dev/full 是一個特殊的設備文件,在向其寫入時總是返回“設備無剩余空間”(錯誤碼為ENPOSPC),讀取時則與/dev/zero 相似,放回無限的二進制流。常被用來測試程序在遇到磁盤無剩余空間錯誤時的行為

/dev/random[urandom]用作隨機數發生器或偽隨機數發生器。

Linux 系統采用 設備文件 統一管理硬件設備。

按照是否對應物理實體,設備可以分為兩種:物理設備,虛擬設備。

9.2 常用的設備命令

系統啟動時會檢測主機硬件并加載適當的驅動程序(模塊,modules),讓硬件正確地啟動與運行。內核所檢測到的各項硬件設備,會記錄在/proc 中

9.2.1 查看 CPU 信息的命令

lscpu 命令 查看 CPU 和處理單元的信息

9.2.2 查看內存信息的命令

最常用命令 free,查看虛擬內存最常用命令 vmstat

  1. free 命令

顯示系統內存狀態,包括空閑的和已用的物流內存,swap 內存,以及被內核使用的緩沖區。

-k:以 KB 為單位,顯示內存的使用情況,默認選項

-b:以字節為單位,顯示內存使用情況

-m:以 MB 為單位,顯示

-g:以 GB 為單位

-t:在輸出的最終結果中,輸出內存和 swap 分區的總量

-o:不顯示系統緩沖區這一列

-s:間隔秒數:根據指定的間隔時間,持續顯示內存使用情況

Swap 指的是交換分區,也就是虛擬內存。

  1. vmstat 命令Virtual Meomory Statistics 虛擬內存統計。Linux 內存管理主要通過“調頁(Paging)”和” 交換(Swapping)”來完成內存調度。

頁面寫入磁盤的過程稱作 Page-Out,頁面從磁盤重新回到內存的過程被稱作 Page-In。當內核需要一個頁面,但發現此頁面不在物理內存中(因為被 Page-Out)時,就發生頁面錯誤(Page Fault)。若 pageout 頻繁發生,內核管理分頁的時間超過運行程序的時間時,系統性能會急劇下降。這時系統已經運行非常慢或進入暫停狀態,這種狀態亦被稱作顛簸 Thrashing

9.2.3 查看塊設備的命令
  1. dmesg 命令

–可以查看 Linux 系統啟動信息的命令

常用于查看系統的硬件信息。除此之外,開機信息也可以通過/var/log/目錄中的 dmesg 文

件查看。

  1. lsblk 命令

列出系統中的所有可用塊設備信息,還能顯示他們之間的依賴關系,但不會列出 RAM 盤的信息。塊設備如,硬盤、閃存盤、CD-ROM 等。

塊設備指設備將數據按可尋址的塊為單位進行輸入/輸出,一次 I/O 操作固定大小的數據塊,通過緩沖區來讀寫塊設備,允許隨機訪問。這種方式適用于發送大量的信息,常見的塊設備有硬盤、磁盤、光盤驅動器等。

9.2.4 磁盤配額的命令
  1. quota 命令

查詢磁盤空間的限制,并得知已使用多少空間。

quota [選項] 用戶名

quota [選項] 群組名

  1. quotacheck 命令

掃描文件系統(必須含有掛載參數 usrquota 和 grpquota)并建立磁盤配額記錄文件。

quotacheck [選項] 文件系統

  1. quotaon 命令

啟動磁盤配額服務。

  1. quotaoff 命令

關閉磁盤配額服務。

第 10 章 網絡管理

10.1 管理網絡接口

計算機的基本網絡參數包括那些?

1) IP 地址:一個 IP 地址標識一塊網卡接口,主要有網絡號和主機號組成。

2) 子網掩碼:IP 地址必須和子網掩碼成對出現,子網掩碼用來確定網絡部分的位數,在IP 地址中對應子網掩碼為 1 的位為網絡部分。

3) 網關:網關的功能是跨區域通信。

4) DNS:DNS 將域名和 IP 進行映射。

  1. 用 Linux 作為聯網機器

1.1 為每個網絡接口分配一個適當的 IP 地址和子網掩碼(Netmask);

1.2 配置默認網關(Gateway)

1.3 配置一個或一個以上的 DNS 服務器

  1. 網絡接口卡(Network Interface Card,NIC)聯網操作是通過機器上的 PCI(Peripheral Component Interconnect)設備,即網絡接口卡來實現。Linux 內核可以檢測出所有連接的 PCI 設備,同時使用 lspci 命令可驗證給出的 PCI 設備是否能被內核檢測到。

  2. 網絡接口 Linux 內核不允許用戶將 NIC 作為文件進行訪問。在/dev 目錄下沒有直接關聯 NIC 的設備節點,但有相應的硬盤和聲卡設備節點

Linux 系統通過網絡接口訪問 NIC,常用 Linux 接口名稱和類型:

名稱

類型

eth0

以太網

lo

(虛擬)回環設備

ppp0

使用 PPP 協議的串口設備(調制解調器)

tr0

令牌環(token ring)

fddi0

光纖

  1. 用 ifconfig -a 檢測接口

ifconfig -a 命令可檢測所有目前已識別的網絡接口信息

ifconfig 命令不加選項,就只能報告活躍的網絡接口。

  1. 用 ifconfig 命令配置網絡接口

ifconfig 查看相關網卡信息

  1. 接口配置文件

linux 接口激活----/etc/init.d/network

linux 接口配置文件----/etc/sysconfig/network-scripts

Linux 系統采用更普遍的方法來配置網絡接口,即根據目錄/etc/sysconfig/network-scripts/

中 以 ifcfg- 形 式 命 名 的 配 置 文 件 來 配 置 網 絡 接 口 , 例 如 ,

/etc/sysconfig/network-scripts/ifcfg-eth0

習慣上分配給回環接口的 IP 地址和子網掩碼是 127.0.0.1/255.0.0.0。

10.2 基本 IP 路由和網關

  1. IP 網絡 每個 IP 地址包括兩個部分:網絡部分和主機部分。

子網掩碼的網絡定義為 A 類 B 類和 C 類網絡,網絡地址分別對應為包含第 1 個 IP 字段,

后面 3 個 0:255.0.0.0;前兩個網絡地址字段:255.255.0.0;前 3 個:255.255.255.0。

  1. 以太網硬件(物理)地址

每個以太網接口的地址有兩個,IP 地址,硬件(MAC)地址。IP 地址用于兩臺主機間的

通信,MAC 地址用于同一 IP 網絡中不同主機間的通信。

  1. 在本地網絡中與其他機器通信

過程:確認通向同一網絡地址;確定目的機器的硬件地址,使用本地網絡的底層 ARP 協

議(Address Resolution Protocol,地址解析協議)驗證;

源機器會將找到的目的及其保留 IP 地址/MAC 地址對,即 APR 緩存。可用 arp -a 命令來

檢測緩存。arp -n : 查看 ip 地址與 mac 地址的映射表

用來將以太網 MAC 地址和一個 IP 地址關聯起來的網絡協議是 ARP。

10.3 配置 DNS 客戶機

  1. 域名系統 DNS

1)將 IP 地址與主機名對應起來的表。只要輸入一個主機的名字,計算機系統就會自動的將這個名字轉換成計算機了解的 IP 地址,這也是 Linux 系統中/etc/hosts 文件的由來

2)DNS 是域名系統(Domain Name System)分布式數據庫,作用是使復雜難記的 IP 地址

轉換成簡明易記的域名,實現 主機名 與 IP 地址 的轉換,在 TCP/IP 網絡中有非常重要的地

位。

  1. 靜態查詢:/etc/hosts
  2. 動態查詢:/etc/resolv.conf

Linux 應用程序使用通用架構來解析主機名,即 resolve 庫。當解析一個主機名時,resolve庫首先試圖執行靜態查詢;接下來 resolve 庫將試著通過咨詢/etc/resolv.conf 配置文件中列出的域名服務器來進行動態查詢。

10.4 DHCP 配置詳解

DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一種網絡管理協議。

通過 DHCP 獲得信息的機器沒有固定的 IP 地址,相反,每當增加一個接口時(用 ifup 命令)

都動態地獲得一個 IP 地址,每當減少一個接口時(用 ifdown 命令)就釋放一個 IP 地址。

為將一臺機器當作 DHCP 客戶機使用,在接口配置文件中將 BOOTPROTO 變量設為 dhcp。

當使用 DHCP 配置接口時,dhclient 守護進程會自動啟動來管理 DHCP 通信。所有這些由

dhclient 守護進程接收到的信息都會立即得到應用。默認網關會添加到路由表中,域名服務器會寫入/etc/resolv.conf 文件,同時 NIS 域(Network Information Service,網絡信息服務)也會自動設定

10.5 配置 Web 服務器

HTTP 協議的全稱是 Hyper Text Transfer Protocol(超文本傳輸協議),他是起什么作用的協議?HTTP 協議與 TCP/IP 協議族內的其他眾多協議相同,用于客戶端和服務器之間的通信。

Apache 是實現 WWW 服務器功能的應用程序,通常所說的“瀏覽 Web 服務器”,在 服務器端 為用戶提供瀏覽 Web 服務 的就是 Apache 應用程序。

10.6 配置 Telnet

常用的遠程控制 Web 服務器的方法

10.7 其他網絡設置

  1. 分配主機名

hostname 命令,可以檢驗機器的主機名,還可動態分配主機名。

  1. /etc/sysconfig/network 文件

記錄通用聯網配置信息,可用來定義整合到啟動過程中的 shell 變量。

3.將網絡配置視為 service

網絡配置可用 service 服務來管理,service network stop。。。

10.8 網絡診斷工具

1.ping、host 和 traceroute 命令

1)ping 命令

可以測試網絡中本機系統是否能到達 一臺遠程主機 ,用來測試兩臺機器間底層 IP 連接性(連通性)的。最簡單的情況,ping 命令接受一個主機名或者 IP 地址作為其單一參數。

2)host 命令

用來直接執行 DNS 查詢。最簡單的情況,只使用一個主機名作為參數,這時 host 命令會使用在/etc/resolv.conf 配置文件中定義的域名服務器進行 DNS 查詢。

3)traceroute 命令

為數據包在路由器間穿行并最終到達目的地路徑提供了詳盡的說明。2.診斷網絡配置問題

3.用 tcpdump 命令檢測網絡活性

用來直接監視網絡,顯示獨立數據包的信息概要。會一直執行,直到 Ctrl+C 組合鍵取消這個命令。

1)可列出所有當前活躍的網絡接口的命令是:ifconfig。

3)習慣上分配給回環接口的 IP 地址和子網掩碼是:127.0.0.1/255.255.0.0

4)定義本地主機名和 IP 地址間轉換的文件是:/etc/hosts

5)可將 Linux 內核的主機名設置為 station=.example.com 的命令是hostname station.example.com

6) 可準確定義 Linux 內核的主機名,并使其在啟動時被動設定的文件是 /etc/hosts

7)可啟用安裝了紅帽 Linux 系統的機器,使其充當路由器角色的文件是: /etc/syscfl.conf

/etc/sysctl.conf 這個文件是用來在 Linux 中開啟路由功能的配置文件(這個配置文件是個內核的配置文件,主要用來修改內核的參數,隨系統重新啟動而啟動一些功能)

8)在適當的文件中,用來啟用路由功能的參數名稱是:net.ipv4.ip_forward;

https://blog.csdn.net/han156/article/details/77924734

9)用來直接執行 DNS 主機名解析的程序是:system-config-network-tui

10)用來截取使用 HTTP 協議(端口 80)的網頁瀏覽器和網頁服務器間數據傳輸的命令是,只在端口 80 將數據傳送給網頁服務器,并將傳輸記錄用二進制格式保存在文件

http.capture 中:tcpdump-p 80>http.capture

11)Linux 網絡接口配置文件名都以 ifcfg 為前綴,文件中變量 DEVICE 用來定義該文件含有哪個接口的配置信息

12 ) ifconfig 可 以 配 置 網 卡 的 Ip 地 址 等 參 數 , 這 與 修 改 配 置 文 件 有 什 么 差 別 ?

ifconfig 暫時改變網絡參數,并不寫入配置文件,因此當計算機重新啟動后,還是從配置文件中設置網絡參數。

net.ipv4.ip_forward = 0 進入這個配置文件找到第七行 ,把這個 0 改為 1 就等于開啟了路由功能。

net.ipv4.ip_forward = 1 說明 Linux 開啟了路由轉發功能

第 11 章 系統服務與日志

11.1 Linux 系統服務

有時也稱為 守護程序,是在 Linux 系統啟動時 自動加載 并在 Linux 系統退出時 自動停止的系統服務

11.2 啟動和關閉服務

  1. 若依據守護程序的啟動與管理方式來區分,基本上可將守護程序分為 可獨立啟動的服務 和 通過一個總管程序來統一管理的服務 這兩大類。stand alone & super daemon.

  2. 獨立的服務要想啟動,主要有兩種方式:一是 使用/etc/init.d/目錄中的啟動腳本來啟動獨立的服務 ,二是 使用 service 服務來啟動獨立的服務

11.3 查看日志

  1. 系統中絕大多數日志文件由 rsyslogd 服務 來統一管理

  2. Apache 服務日志有 Apache 軟件自己產生并記錄,但其日志文件格式和系統默認日志的格式是一致的。

  3. /var/ 用來保存系統動態數據的目錄,/var/log/目錄 就是系統日志文件的保存位置。

11.4 管理日志

rsyslogd 服務依賴其配置文件 /etc/rsyslogd.conf 來確定各個服務不同等級的日志信息會被記錄的位置

第三篇 應用篇

第 12 章 VI 編輯器

12.2 工作模式

命令模式、文本編輯模式和末行模式 3 種。

12.3 進入和退出 VI

12.3.1 進入 VI

vi :進入 VI

vi 文件名 :文件名不存在則創建文件,存在則打開文件

vi+ 文件名 : 進入 VI,光標停在文件的最后一行開始處

vi+n 文件名 :進入 VI,光標停在文件的第 n 行開始處

vi+/字符串 文件名 : 進入 VI,光標停在文件中指定字符串第一次出現的行首。

12.3.2 保存文件或退出 VI

命令模式下按兩次 Z 鍵,將保存文件并退出 VI。

末行模式下

w :write,保存當前正在編輯的文件,但不退出 VI

q :quit,不進行文件保存,直接退出 VI,若文件有改動過而沒有保存,將產生錯誤。

q! : 強行退出 VI,若文件內容有改動則恢復到文件的原始內容。

wq :保存并退出 VI (ZZ)

12.5 文本文件編輯

12.5.1 文本的插入

插入文本可以在命令模式下輸入 i、a 或 o 命令。文本框底部的“INSERT”表示編輯器正處于文本編輯模式。

12.5.2 光標的移動

命令模式下:

o : 在下一行插入一個空行,光標移動到行首

$ : 光標移動到當前行的行尾

nw : 光標右移 n 個字(或英文單詞)

w : 光標右移 1 個字(或英文單詞)

nb : 左移 n 個字(或英文單詞)

b : 左移 1 個字(或英文單詞)

( : 光標移動本句的句首,若已經處于本句句首,則移動到前一句的句首

) : 光標移到下一句句首

{ : 光標移到本段段首,若已經處于本段段首,則移動到前一段段首

} : 光標移到下一段段首

1G : 光標移到文件首行的行首

G : 光標移到文件末行的行首

nG : 光標移到文件第 n 行行首,n 為整數

Ctrl+G : 報告光標所處位置,位置信息顯示在 VI 最后一行

12.5.3 刪除

文本編輯模式下,Delete 鍵可以刪除光標坐在位置的后一個字符,Backspace 鍵可以刪除

光標所在位置的前一個字符。命令模式下:

x : 刪除光標坐在位置的一個字符

nx : 刪除從光標開始的 n 個字符

dw : 刪除從光標開始的一個字

ndw : 刪除從光標開始的向右 n 個字

db : 刪除光標左邊的一個字符

ndb : 刪除從光標開始的向左 n 個字符

d0 : 刪除從光標前一個字符到行首所有字符

d $ : 刪除光標所在字符到行尾的所有字符

dd : 刪除光標所在的行

ndd : 刪除從當前行開始的 n 行

d( : 刪除從當前字符開始到句首的所有字符

d) : 刪除從當前字符開始到句尾的所有字符

d{ : 刪除從當前字符開始到段首的所有字符

d} : 刪除從當前字符開始到段尾的所有字符

命令模式下:

u : undo,可以撤銷前一次的操作

12.5.4 查找與替換

命令模式下,查找文本:

?字符串 : 在文本內容中查找與字符串對應的內容

(區分大小寫)

n : 查找下一個匹配

N : 查找上一個匹配

替換文本:

s/查找的字符串/新字符串 : 在當前行用新字符串替換查找的字符串,只替換第一個查找到的字符串。

s/查找的字符串/新字符串/g : 在當前行用新字符串替換所有的查找的字符串。

1,ms/查找的字符串/新字符串/g : 在第 1 行到 m 行用新字符串替換所有查找的字符串。

1,$ s/查找的字符串/新字符串/g : 在整個文件中用新字符串替換所有查找的字符串。

12.5.5 復制與粘貼

yw : 將光標所在位置到字尾的字復制到緩沖區中。

nyw : 將光標所在位置開始的 n 個字復制到緩沖區中。

yb : 從光標開始向左復制一個字符

nyb : 從光標開始向左復制 n 個字符

y0 : 復制從光標前一個字符到行首的所有字符

y $ : 復制從光標開始到行末的所有字符

yy : 復制當前行

nyy : 復制從當前行開始的 n 行

p : 在光標所在位置的后面插入復制的文本

P :大寫,在光標所在位置的前面插入復制的文本

np : 在光標所在位置的后面插入復制的文本,復制 n 次

nP : 在光標所在位置的前面插入復制的文本,復制 n 次

要復制 example.txt 所有文本,首先將光標移動到文件的開頭位置,然后在命令模式下輸入

3yy,輸入完成后在最后一行顯示“3 lines yanked”,表示文本已經被復制。

12.6 存儲緩沖區

數字編號緩沖區和命名緩沖區12.6.1 數字編號緩沖區

VI 編輯器使用 9 個臨時緩沖區,編號從 1 到 9。

每次新刪除或復制的文本替換緩沖區以前的內容,“dd”命令后,VI 將被刪除的行存到緩沖

區 1,當再次 dd 刪除另一行,VI 將以前的內容放到下一個緩沖區 2,新內容存到緩沖區 1。

緩沖區總是保留最新被修改的內容。

使用 p 命令并在它前面加上緩沖區號就可以找回數字編號緩沖區的內容。如,9p,表示要

將緩沖區 9 的內容復制到光標位置。指定緩沖區的格式可以表示為 np

12.6.2 命名緩沖區

26 個命名緩沖區,用小寫字母 a 到 z 命名。

用戶可將刪除或復制的文本存到指定緩沖區,然后使用 p 命令將指定緩沖區的文本復制到

文件的其他地方。命名緩沖區內容保持不變,知道用戶在刪除或復制操作中指定了該緩沖區。

緩沖區命名格式:緩沖區名+命令

如,wdd 表示刪除當前行,將它的副本保存到緩沖區 w。z3yy,表示復制 3 行到緩沖區 z。

12.7 編輯多個文件

啟動 VI 時,可以給出多個文件名,當結束一個文件的編輯時,就可以繼續編輯下一個文件。

輸入 n 命令啟動下一個編輯文件,若當前文件已被修改,就會顯示“No write since last

change(

add !to override)”,表示自從上次修改后不能寫入,可 n!命令忽略這個提示

信息。

ar 命令查看文件名列表。

12.8 VI 編輯器的設置

12.8.1 set 命令選項

用來設置選項,選項分為 3 類:布爾觸發器、數字式、串。

1)布爾觸發器,用戶可以打開或關閉他們,像開關。通過名字來設置,在名字前面加上

no 來禁止。如,set C 表示打開,輸入 set no C 表示關閉。

2)數字式選項 接受數字值,選項不同,數值范圍也不同。如,某項可以使用 set C=1,表

示將 1 賦給 C。

3)串選項 同數字式選項類似,但是它接受串值。如,輸入 set C=yes,表示將 yes 賦給 C。

set 命令基本格式如下:

1) “set all” 表示在屏幕上顯示所有的選項;

2) “set ” 表示只顯示修改過的選項;

3) “set C?”表示顯示選項 C 的值。

12.8.2 設置 VI 環境

時效性,set 命令設置想要的值

常用 VI 參數選項:

autoindent:縮寫 ai,將新行與前一行的行首對齊。

ignorecase:縮寫 ic,在搜索選項中忽略大小寫。

magic:允許在搜索時使用特殊字符。

number:縮寫 nu,顯示行號。

report:通知用戶上一個命令影響的行號。

scroll:設定使用 Ctrl+D 鍵命令翻動的行數。

shiftwidth:縮寫 sw,設置縮進的空格數,與 autoindent 選項一起使用。

showmode:縮寫 smd,屏幕的右下角顯示 VI 編輯器的模式。

terse:顯示簡短的錯誤信息。

1)若用戶想在每次對文件進行編輯時都收到反饋信息,可以輸入 set report=02)VI 編輯器打開文檔后,想把 10-15 行中的第一個“abc”替換為“efg”,應輸入命令

10, 15s/abc/efg

3)下列命令的含義:? VI:在文本內容中查找與“VI”對應的內容

1, $ s/VI/Emacs/g:在整個文件中用“Emacs”替換所有“VI”

3yy G P:復制從當前行開始的 3 行,并粘貼到文件末行的行首

4)編輯 example.txt 文件,把 3 行到 10 行間的字符串 is 都替換為 are,在末行模式下輸入:

3,10s/is/are/g

5)刪除從 16 行到 20 行的所有內容,應輸入:16G 5dd

6)輸入命令 2p 的含義是:將緩沖區 2 的內容復制到光標所在位置

7)將 3 至 7 行的內容復制到第 1 行行首應輸入命令:3G 5yy 1G P

第 13 章 Emacs 編輯器

13.2 Emacs 的操作

ubantu

sudo apt-get install emacs

13.2.2 Emacs 的啟動

啟動:emacs 或 emacs 加上文件名

界面:標題欄、菜單欄、窗口區域、模式行、回顯行。

模式行:啟動界面倒數第二行。模式行顯示狀態信息。包括以下幾個字段:

-:— buf pos L#(Pattern)

1)冒號后面的 3 個字符中前 2 個字符表示緩沖區中文本的狀態。

–:表示緩沖區未被編輯。

**: 表示緩沖區文本已經被修改。

%%: 表示只讀緩沖區中文本未被修改。

%*: 表示只讀緩沖區中文本已經被修改。

2)buf 顯示窗口緩沖的名字,一般為文件名。

3)pos 可指示以下選項:All 表示顯示了整個文件;Top 表示顯示了文件的開始部分;Bot

表示顯示了文件的末尾部分;NN%表示在窗口頂部以上的部分顯示緩沖區文件的百分比。

4)L#表示字母 L 后跟當前光標所在行的行號。

5)(Pattern)表示緩沖區中有效的模式。可用主模式包括 Fundamental 模式、Text 模式、Lisp 模式、C 模式和其他模式。

13.2.3 Emacs 的退出

先按 Ctrl+X 組合鍵,再按 Ctrl+S 鍵 : 保存文件并退出 Emacs

先按 Ctrl+X 組合鍵,再按 Ctrl+C 鍵 : 不保存文件退出 Emacs

先按 Ctrl+X 組合鍵,再按 Ctrl+W 鍵 : 另存為文件

13.2.4 文件與緩沖區操作

先按 Ctrl+X 組合鍵,再按 Ctrl+F 鍵 : 搜索并打開文件

先按 Ctrl+X 組合鍵,再按 Ctrl+V 鍵 : 打開另一個文件以替換當前打開的文件

先按 Ctrl+X 組合鍵,再按 Ctrl+I 鍵 : 在光標所在處插入文件

按組合鍵 Alt+X

: 恢復自動保存的文件

先按 Ctrl+X 組合鍵,再按 Ctrl+B 鍵 : 切換緩沖區

先按 Ctrl+X 組合鍵,再按 Ctrl+S 鍵 : 保存緩沖區

按 Ctrl+G 組合鍵 :

撤銷命令

13.2.5 Emacs 的基本操作
  1. 光標的移動

Ctrl+F 將光標向前移動一個字符

Ctrl+B 將光標向后移動一個字符

Ctrl+P 將光標移動到上一行

Ctrl+N 將光標移動到下一行

Ctrl+A 將光標移到當前行的行首

Ctrl+E 將光標移到當前行的行尾

Ctrl+V 將光標向前移動一屏

Alt+V 將光標向后移動一屏

Alt+F

將光標向前移動一個單詞

Alt+B

將光標向后移動一個單詞

Alt+<

將光標移到文本開頭

Alt+>

將光標移到文本末尾

  1. 刪除

Backspace

刪除光標前的一個字符

Ctrl+D

刪除光標處的字符

Ctrl+X,再按 U

撤銷上次修改

Alt+D

刪除光標后的一個單詞

Ctrl+K

刪除從光標到該行行尾的所有字符

Ctrl+X,再按 Backspace 刪除前一句

Ctrl+W

刪除兩個位置間的所有文本

  1. 重排

Ctrl+空格鍵

在當前點位置設置標記

Ctrl+X,Ctrl+X

互換光標點和標記的位置,該命令可以用來顯示標記的位置

如,對于 example.txt 文件,將光標移動到第 2 行首字母 T 上。Ctrl+空格鍵,在屏幕底部的

回顯行會顯示信息“Mark set”。將光標移至文件末尾設置點,按組合鍵 Ctrl+X,Ctrl+X,互

換光標點和標記,顯示出標記的位置,確保設置了標記。

按 Ctrl+W,刪除選中的文本。被刪除的文本放置在緩沖區內,可以重新插入文本的其他位置。

將光標放于第 2 行,按 Ctrl+Y 組合鍵,在光標位置插入被刪除的文本

  1. 搜索和替換

Ctrl+S 向前遞增搜索

Ctrl+R 向后遞增搜索

替換命令需要提供兩個參數:搜索字符串和替換字符串。每一個參數都以 Enter 鍵結束。

命令按鍵為:先按 Alt+Shift+5 組合鍵,然后輸入要搜索的字符串,再按 Enter 鍵,Emacs會提示輸入要替換的字符串,輸完按 Enter。

空格鍵或 Y 替換當前匹配并進入下一匹配處Delete 鍵或 N

忽略此次匹配并進入到下一匹配處

,(逗號)鍵

顯示替換結果

Enter 鍵或 Q

直接退出

.(句號)鍵

替換當前匹配并退出

!鍵

直接替換剩下的所有匹配

^鍵

回到前一匹配處5. 大小寫字母轉換

將光標放在單詞前

Alt+U

將整個單詞轉為大寫

Alt+L

將整個單詞轉為小寫

Alt+C

將首字母改為大寫

Ctrl+X,Ctrl+U

將指定區域改為大寫

Ctrl+X,Ctrl+L

將指定區域改為小寫

  1. 幫助操作

Ctrl+H

調用 Emacs 的幫助

  1. 窗口操作

Ctrl+X,再按 2

將當前窗口水平分割為兩個窗口

Ctrl+X,再按 3

將當前窗口垂直分割為兩個窗口

Ctrl+X,再按>

向右滾動當前窗口

Ctrl+X,再按<

向左滾動當前窗口

Ctrl+X,再按 0

刪除當前窗口

Ctrl+X,再按 O

將光標放在其他窗口上

Ctrl+X,再按 1

刪除當前窗口外的所有窗口

13.2.6 Emacs 環境下編譯并運行 C/C++程序

啟動 Emacs,輸入 “emacs -nw” 命令

先按 Ctrl+X,再 Ctrl+F,打開文件 test.c

Ctrl+X,Ctrl+S,保存文件

編譯文件,Alt+X,輸入“eshell”命令進入緩沖區

輸入“gcc test.c -o test” 命令以編譯源文件,并通過“./test”命令運行程序

1)下列不屬于光標移動命令的組合是

A. Ctrl+F B. Ctrl+A C. Alt+D D. Alt+B

2)重排是對文本中的內容進行操作,選中的一段文字表示區域,區域的起點叫做 標記,

光標移動到的位置和標記之間就是區域,光標在文本中的位置叫做 光標點。

3)若回顯行顯示“Find file:/tmp/”,說明用戶執行了搜索并打開文件的命令:先按 Ctrl+X 組

合鍵,再按 Ctrl+F 組合鍵

4)用戶如果想查看在 Emacs 中保存的文件,可通過 Enter 鍵 命令查看文件列表。

第 14 章 OpenSSH

OpenSSH 是安全 shell 協議(secure shell,簡稱 SSH)的免費開源實現。可以用來進行遠程控制、在計算機之間傳送文件等。

SSH 采用非對稱加密技術(RSA)加密所有傳輸的數據。

OpenSSH 提供了服務端后臺程序和客戶端工具,對遠程控制和文件傳輸過程的數據進行加密處理。

SSH 是 安全外殼 協議。

14.1 安裝 OpenSSH

OpenSSH 是 Linux 最常用的 SSH 服務器/客戶端軟件。

CentOS 下,查看是否默認安裝了 OpenSSH,rpm -qa openssh*

啟動服務:service sshd start

開啟防火墻的 22 號端口:

sudo firewall -cmd –zone =public –add-port=22/tcp --permanent14.2 配置 OpenSSH

OpenSSH 的主配置文件 /etc/ssh/sshd_config。

常見的配置選項:

1)設置 SSH 的端口號是 22(默認端口號 22):Port=22。

14.3 OpenSSH 的使用

14.3.2 文件傳輸

SFTP 是安全文件傳送協議,可以為傳輸文件提供一種安全的加密方法。SCP 是遠程文件復制的協議,復制過程是加密的。

1)以下協議中,為遠程登錄會話和其他網絡服務提供安全性的協議是

A. FTP B. HTTP C. SSH D. ICMP

2)SSH 采用的加密算法是: RSA

3)SSH 是由 IETF(the Internet Engineering Task Force)指定的建立在應用層基礎上的 安全網絡 協議。

4)SSH 是專為 遠程登陸 會話和其它網絡服務提供安全性的協議。

5)SSH 采用了 非對稱加密技術(RSA)加密所有傳輸的數據

第 15 章 Linux 系統的應用程序開發技術

15.5 GCC 編輯器

15.5.1 C 語言程序的編譯過程

gcc -E test.c -o test.i

gcc -S test.i -o test.s

gcc -c test.s -o test.o

gcc test.o -o test

簡化的 GCC 命令:

gcc test.c -o test

15.5.2 GCC 基本用法

gcc [選項] [文件名]

默認情況下,GCC 會在系統默認的路徑中(如 usr/lib)尋找所需的庫文件,當使用 -L 選項,會首先到-L 指定的目錄下去尋找相關庫文件。

15.6 GDB 調試器

15.6.1 GDB 的啟動和退出

輸入命令 “gdb 程序名“ 或者先輸入 “gdb” , 然后輸入 “file 程序名”

15.6.2 調試前的準備

使一個可執行文件被 GDB 調試,需要在編譯程序時加入“-g”,這個選項可以在 GCC 編譯程序時產生調試信息。

gcc -g test.c -o test

./test

若想要詳細了解某個 gdb 命令的使用方法,可使用 help 命令“help list”和 help all“”15.6.3 顯示和查找源代碼調試時查看源代碼可使用“list”命令:

list : 每次調用該命令顯示 10 行代碼,若再次運行該命令,則顯示接下來的 10 行

list m,n 顯示從第 m 行到 n 行的代碼

list 源文件:m,n 顯示源文件中第 m 行到 n 行的代碼

list 函數名

顯示函數周圍的代碼

list 源文件:函數名 顯示源文件中函數名指定的周圍代碼

可以在源文件中從當前行向后查找第一個匹配的字符串,命令格式:“search 字符

串””forward 字符串”。也可反向查找字符串,“reverse-search 字符串”。

15.6.4 執行程序

要使程序開始運行,在(

gdb)的提示符下輸入“run”或“r”

15.6.5 設置斷點
  1. break 行號 : 將斷點設置在某行

如,(

gdb)break 4

Breakpoint 1 at 0*400525:file test.c line 4.

1 表示第一個斷點,0*400525 是斷點所在的內存地址

設置好斷點后,可以輸入“run”命令運行程序

  1. break 函數名 : 斷點設置在函數名上
  2. break 行號或函數名 if 條件 : 通過條件設置斷點
  3. info breakpoints 命令 查看當前所有的斷點

Num 表示斷點的編號;

Type 表示斷點的類型;

Disp 表示斷點在生效一次后是否失去作用,如果是則為 dis,否則為 keep;

Enb 表示當前斷點是否有效,如果是,y,否則為 n;

Address 表示終端所處的內存地址;

What 表示發生在哪個函數的第幾行,“stop only if i==4”標明是一個條件斷點。

  1. disable 斷點編號 : 使斷點失效

還可通過“enable”繼續使其生效

  1. 刪除斷點

clear

刪除程序中的所有斷點

clear 行號 刪除此行的斷點

clear 函數名 刪除該函數的斷點

clear 斷點編號 刪除指定編號的斷點

15.6.6 查看和設置變量的值

執行到斷點的時候,往往需要通過查看變量的值來了解當前程序的執行情況

  1. 查看變量的值

print 變量名或表達式2. 查看變量的類型

whatis 變量名或表達式,用于顯示某個變量或表達式結果的數據類型

  1. 設置變量的值

set variable 變量=值

print 變量=值

15.6.7 調試的控制

查看變量的值后,可以讓程序繼續運行。是要一步一步運行,還是讓程序一直運行下去

  1. kill 命令

用于結束當前程序的調試,輸入該命令后,會詢問是否退出當前程序的調試,輸入 y 結束,

輸入 n 繼續調試。

  1. continue 命令

讓程序繼續運行到下一個斷點或運行完整個程序

如,使用 run 讓程序運行到第 1 個斷點處,查看變量 n 的值,接下來使用 continue 讓程序

繼續運行至第 2 個斷點處,再查看 n 的值。

=

  1. next 和 step 命令

單步調試功能,每次執行一條語句

next 命令會把該函數當作一條語句執行,不會進入函數的內部;

step 命令則會進入函數內部,繼續單步調試程序。

使用 next 命令每次執行一條語句,執行一條語句后可以使用 print 命令查看變量的值。

  1. nexti 和 stepi 命令

用于單步執行一條指令,而不是一條語句,對一條語句而言,往往對應多條指令。

如,對一條循環語句“for(

i=0;i<6;i++)”而言,使用“nexti”或“stepi”命令,需要輸入多

次才能執行完畢。

GDB 命令

list

縮寫 l

顯示多行源代碼

break

縮寫 b

設置斷點

info

縮寫 i

描述程序的狀態

run

縮寫 r

開始運行程序

display

縮寫 disp

跟蹤查看某個變量

step

縮寫 s

執行下一條語句,若該語句為函數調用,則進入函數,執行其中的

第一條語句

next

縮寫 n

執行下一條語句,若該語句為函數調用,則不會進入函數內部執行

print

縮寫 p

打印內部變量值

continue

縮寫 c

繼續程序的運行,直到遇到下一個斷點

set variable name=v

設置變量的值

start

縮寫 st

開始執行程序,在 main 函數的第一條語句前面停下來

file

裝入需要調試的程序

kill

縮寫 k

終止正在調試的程序

watch

監視變量值的變化

backtrace

縮寫 bt

查看函數調用信息

frame

縮寫 f

查看棧幀

quit

縮寫 q

退出 GDB 環境

15.7 make

make 命令是 GNU 工程化編譯工具,用于編譯大量互相關聯的源代碼,使用它可以實現項目的工程化管理,提高開發效率。

make 工具可以用來維護程序模塊關系和生成可執行程序。執行該命令時,將 make 工具的

編譯指令放入一個名為 makefile(或 Makefile)的文件中,該文件定義了整個項目的編譯

規則、模塊之間的依賴關系和文件的編譯順序。

make 命令可以使整個項目的源文件進行自動編譯,用戶只需要運行一條命令,這種方式極

大的提高了軟件的開發效率。

make 命令從 makefile 文件中獲取模塊之間的依賴關系。

15.7.1 makefile 文件的構成

一個 makefile 文件的基本單元是規則,一條規則指定一個或多個目標文件,目標文件后面

跟的是編譯生成目標文件所依賴的文件或模塊,最后是生成目標文件的命令。

規則格式如下:

目標文件列表 分隔符 依賴文件列表

[命令]

[命令]

“[]”代表該項可選。

15.7.2 執行 makefile

當用戶輸入 make 命令后,首先在當前目錄下尋找名為 makefile 或 Makefile 的文件。

1)頭文件#include<my.h>和#include”my.h”中的<>和“”有什么區別?

答:<>表示編譯器將在系統預設的頭文件目錄下搜索頭文件;“”表示先在當前目錄下搜索,

找不到時再去系統頭文件目錄下搜索頭文件。

第 16 章 Web 服務器搭建、應用開發與部署

Linux 下,采用 Eclipse 開發工具,基于 MVC 的 Java Web 開發,使用當下較為流行的 SSM框架進行演示。

16.1 Web 服務器搭建的準備

16.1.1 配置 Java

要先將 Linux 自帶的 openJDK 卸載,

后安裝 Oracle 的 JDK;

java -version 查看已安裝的 Java 版本信息

rpm -qa | grep java 查找已安裝的 openJDK 位置之后逐一卸載,

下載 JDK 壓縮包

解壓后,配置環境變量 gedit ~/.bashrc

bashrc 文件中配置 4 個環境變量:JAVA_HOME,JRE_HOME,PATH,CLASSPATH配置完畢關閉文件,在終端執行 source ~/.bashrc 使環境變量立即生效

16.1.2 配置 MySQL

MySQL 的配置文件 my.cnf p350

#設置 MySQL 的安裝目錄 basedir

#設置 MySQL 數據庫的數據存放目錄 datadir

#

16.2 Web 服務器的搭建

16.2.1 安裝配置 Tomcat

使用 startup.sh 命令啟動服務,調用方法 /usr/local/tomcat8/bin/startup.sh

使用 shutdown.sh 命令關閉服務16.2.2 配置 DNS、DHCP、FTP 服務

  1. 配置域名系統 DNS

實現域名解析的軟件模塊是 BIND。

DNS 服務使用的端口是 53。

設置正向解析的數據庫文件(named.bob.com)

設置反向解析的數據庫文件(named.172.16.5)

  1. 配置 DHCP

動態主機配置協議 DHCP 是一個局域網的網絡協議。

  1. 配置 FTP

FTP 是文件傳輸協議。

16.3 開發環境與配置

16.4 網站設計開發與部署

16.4.1 MVC 簡介

MVC 是模型 Model 視圖 View,控制器 Controller, 一種軟件設計典范。

16.4.2 常見框架
  1. Struts 2

Struts 2 是一個基于模型、視圖、控制器的 MVC 設計模式應用框架。

  1. Spring

Spring 是一個輕量級控制反轉(IoC)和面向切面(AOP)的容器框架。

  1. MyBatis

MyBatis 是一款優秀的持久層框架,支持定制化 SQL、存儲過程以及高級映射。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85614.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85614.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85614.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Web攻防-XSS跨站Cookie盜取數據包提交網絡釣魚BEEF項目XSS平臺危害利用

知識點&#xff1a; 1、Web攻防-XSS跨站-手工代碼&框架工具&在線平臺 2、Web攻防-XSS跨站-Cookie盜取&數據提交&網絡釣魚 演示案例-WEB攻防-XSS跨站-Cookie盜取&數據提交&網絡釣魚&Beef工具 1、XSS跨站-攻擊利用-憑據盜取 條件&#xff1a;無防…

自力更生式養老VS三大新型養老:在時代裂變中重構銀發生存法則

在歲月長河中&#xff0c;父母曾為子女遮風擋雨&#xff0c;當他們步入暮年&#xff0c;養老問題成為家庭與社會共同關注的焦點。 “父母的養老終究是自力更生”&#xff0c;這句話道出了養老的本質內核。 然而&#xff0c;在自力更生的基礎上&#xff0c;選擇合適的養老方式…

計算機網絡學習筆記:Wireshark觀察TCP通信

文章目錄 前言一、前置準備二、三報文握手過程抓包2.1、第一次握手2.2、第二次握手2.3、第三次握手 三、通信過程抓包3.1、報文 44379 – 客戶端發數據&#xff08;PSH, ACK&#xff09;3.2、 報文 44380 – 服務端確認收到數據&#xff08;ACK&#xff09;3.3、報文 44469 – …

在Linux中,Iptables能做什么?

概述 背景說明 在運維工作中&#xff0c;Iptables是一個不可或缺的工具&#xff0c;它提供了強大的網絡流量控制和管理能力。 問題呈現 iptables是一個不可獲取的工具&#xff0c;你對其了解多少&#xff1f;該工具你是否真的會用&#xff1f;詳細功能對應的應用場景你是否…

Linux——linux的基本命令

目錄 一、linux的目錄結構 二、絕對路徑和相對路徑 三、文件類型&#xff08;linux下所有東西都可看作文件&#xff09; 四、文件的權限 五、文件權限的修改&#xff08;chmod&#xff09; 六、linux常用的命令 七、文件查看命令 八、文件編輯命令 九、文件壓縮與解壓…

智慧水利數字孿生解決方案:百川孿生智領千行,100+標桿案例賦能智慧水利全域升級

在數字技術革命與產業變革深度交織的浪潮下&#xff0c;智慧水利作為保障國家水安全、推動水利高質量發展的核心載體&#xff0c;正以數字孿生技術為引擎&#xff0c;驅動水利行業從“經驗驅動”向“數據驅動”轉型。 山東融谷作為智慧水利數字孿生領域的創新實踐者&#xff0c…

深入解析ID3算法:信息熵驅動的決策樹構建基石

本文來自「大千AI助手」技術實戰系列&#xff0c;專注用真話講技術&#xff0c;拒絕過度包裝。 ID3&#xff08;Iterative Dichotomiser 3&#xff09; 是機器學習史上的里程碑算法&#xff0c;由Ross Quinlan于1986年提出。它首次將信息論引入決策樹構建&#xff0c;奠定了現代…

Java解析audio時長

前提需要電腦上先安裝后ffmpeg public long parseDuration(String audioPath) {long durationMs -1;try {Process process Runtime.getRuntime().exec("ffprobe " audioPath);// InputStream is process.getInputStream();InputStream is process.getErrorStrea…

python學智能算法(十五)|機器學習樸素貝葉斯方法進階-CountVectorizer多文本處理

【1】引言 前序學習進程中&#xff0c;已經學習CountVectorizer文本處理的簡單技巧&#xff0c;先相關文章鏈接為&#xff1a; python學智能算法&#xff08;十四&#xff09;|機器學習樸素貝葉斯方法進階-CountVectorizer文本處理簡單測試-CSDN博客 此次繼續深入&#xff0…

AiPy 監控視頻智能監察:人像一鍵抽取+可反復執行程序落地

兄弟們&#xff0c;不知道你們有沒有過查監控的經歷&#xff0c;雖然現在監控攝像頭是越來越多&#xff0c;硬盤越塞越滿&#xff0c;但真出了事兒&#xff0c;回放查錄像堪比大海撈針&#xff01;純人工一幀幀的去找&#xff0c;能把眼睛盯瞎還是人影都找不到。不過我最近搞了…

期貨反向跟單-終止盤手合作原則(二)

在期貨反向跟單的領域中&#xff0c;數據就是實打實的真金白銀&#xff0c;是策略能否持續盈利的核心價值所在。然而&#xff0c;許多團隊在實際運營過程中&#xff0c;都遭遇了相似的困境&#xff1a;期初策略運轉良好&#xff0c;可隨著時間推移&#xff0c;數據表現卻每況愈…

【Unity】MiniGame編輯器小游戲(三)馬賽克【Mosaic】

更新日期&#xff1a;2025年6月17日。 項目源碼&#xff1a;后續章節發布 索引 馬賽克【Mosaic】一、游戲最終效果二、玩法簡介三、正式開始1.定義游戲窗口類2.規劃游戲窗口、視口區域3.地圖方塊陣列①.定義方塊結構體②.生成方塊陣列③.計算九宮格黑色方塊數量④.排除任意九宮…

基于深度學習的智能圖像質量評估系統:技術與實踐

前言 在數字圖像處理和計算機視覺領域&#xff0c;圖像質量評估&#xff08;Image Quality Assessment, IQA&#xff09;是一個重要的研究方向。圖像質量評估的目標是通過算法自動評估圖像的質量&#xff0c;包括清晰度、對比度、噪聲水平等。傳統的圖像質量評估方法主要依賴于…

【Golang面試題】Go語言實現請求頻率限制

Go語言實現請求頻率限制&#xff1a;從計數器到令牌桶的完整指南 在實際開發中&#xff0c;接口被惡意刷請求是常見問題。本文將深入探討Go語言中四種主流的請求限流方案&#xff0c;從簡單到復雜逐步深入&#xff0c;助你構建高可用服務。 一、基礎方案&#xff1a;計數器法…

11Labs 增長負責人分享:企業級市場將從消費級或開發者切入丨Voice Agent 學習筆記

本文摘自 Founder Park AI 產品如何做增長&#xff0c;ElevenLabs的案例很值得學習。 專注于 AI 語音生成的獨角獸企業 ElevenLabs 可以說一直在高速增長。在今年 1 月完成 1.8 億美元 C 輪融資后&#xff0c;ElevenLabs 的估值突破 30 億&#xff0c;直指 33 億美元。2024 年…

Linux 命令:grep

概述 在Linux系統里&#xff0c;grep是一款十分實用的命令行工具&#xff0c;它主要用于在文件或者輸入流中搜索符合特定模式的文本。下面為你詳細介紹它的用法。資料已經分類整理好&#xff1a;https://pan.quark.cn/s/26d73f7dd8a7 基本語法 grep [選項] 搜索模式 [文件..…

Java八股文——MySQL「架構篇」

MySQL主從復制了解嗎 面試官您好&#xff0c;我了解MySQL的主從復制。它是構建高可用、高可擴展數據庫架構的核心基石。 1. 主從復制的核心原理與流程 整個主從復制的過程&#xff0c;就是一場圍繞 binlog&#xff08;二進制日志&#xff09; 的“接力賽”。這個過程主要可以…

ubuntu下python版本升級導致pyqt不能正常運行解決

最終解決方案 ubuntu下多python版本pyqt兼容性問題解決 python3.9 -m pip install --upgrade --force-reinstall --prefer-binary pyqt5)嘗試解決方案一(失敗) 系統默認python版本可以&#xff0c;其他版本不行 sudo apt install pyqt5-dev-tools嘗試解決方案二(失敗) 一直…

AIGC工具平臺-VideoRetalking音頻對口型數字人

唇形合成技術正逐漸成為AIGC內容生產領域的重要工具&#xff0c;能夠實現音視頻數據的高度融合。基于VideoRetalking模塊的可視化界面降低了技術門檻&#xff0c;使非技術背景的用戶也能便捷體驗唇形驅動數字人合成的流程。 本文重點解析該模塊的使用方式及開發流程&#xff0…

前端項目如何部署為https

如何為項目部署設置HTTPS 設置HTTPS是保護網站數據傳輸安全的重要步驟。以下是設置HTTPS的主要方法&#xff1a; 1. 獲取SSL/TLS證書 免費證書選項 Let’s Encrypt&#xff1a;最流行的免費證書頒發機構Cloudflare&#xff1a;提供免費SSL和CDN服務ZeroSSL&#xff1a;另一…