內容簡介
『如果你對Linux有興趣,那麼這本書絕對該在你的書單中。』 ─ LinuxInsider
『這本書充分介紹了Linux架構的每一個面向。』
─ Everyday Linux User
SYSTEMD 靈活運用 | SUPERUSER 必讀之作
★全新收錄★
✔LVM、journald日誌系統和IPv6的實作
✔新增「第17章」,專門討論虛擬化、容器和cgroup
✔systemd的延伸討論
Linux不像其他的作業系統,它不會對使用者隱瞞重要的資訊。反之,它讓你可以完全控制你的電腦──Linux會讓它的使用者掌控一切。但要真正掌握Linux,就必須理解這個作業系統的工作機制與內部結構,包括「系統是如何啟動(boot)的」、「網路是如何運作的」,以及「Linux的核心(kernel)實際上都做了些什麼」。
本書是暢銷書《How Linux Works》的第三版。作者Brian Ward再次深入這個深受喜愛的作業系統,對各個層面進行更詳盡、更深度的探討。任何對Linux內部運作感到好奇的讀者,都可以從中獲益。本書是作者多年專業知識的累積,第三版更新並強化許多知識,亦新增LVM(邏輯卷冊管理程式)、虛擬化、容器等內容。透過這本書,你將學到:
・Linux是如何啟動的,從開機載入程式(boot loader)到init (systemd)
・核心如何管理設備、設備驅動程式和程序
・網路、介面、防火牆和伺服器的運作概念
・開發工具的工作原理,以及它們與共享函式庫之間的關係
・如何編寫出色的shell script
你還能探索Linux的核心,並檢查使用者空間程序中的關鍵系統任務,包括系統呼叫、輸入和輸出以及檔案系統維護。結合背景、理論、實際範例和詳盡的解釋,本書將教你「控制作業系統」所需的全部知識。
『這本書充分介紹了Linux架構的每一個面向。』
─ Everyday Linux User
SYSTEMD 靈活運用 | SUPERUSER 必讀之作
★全新收錄★
✔LVM、journald日誌系統和IPv6的實作
✔新增「第17章」,專門討論虛擬化、容器和cgroup
✔systemd的延伸討論
Linux不像其他的作業系統,它不會對使用者隱瞞重要的資訊。反之,它讓你可以完全控制你的電腦──Linux會讓它的使用者掌控一切。但要真正掌握Linux,就必須理解這個作業系統的工作機制與內部結構,包括「系統是如何啟動(boot)的」、「網路是如何運作的」,以及「Linux的核心(kernel)實際上都做了些什麼」。
本書是暢銷書《How Linux Works》的第三版。作者Brian Ward再次深入這個深受喜愛的作業系統,對各個層面進行更詳盡、更深度的探討。任何對Linux內部運作感到好奇的讀者,都可以從中獲益。本書是作者多年專業知識的累積,第三版更新並強化許多知識,亦新增LVM(邏輯卷冊管理程式)、虛擬化、容器等內容。透過這本書,你將學到:
・Linux是如何啟動的,從開機載入程式(boot loader)到init (systemd)
・核心如何管理設備、設備驅動程式和程序
・網路、介面、防火牆和伺服器的運作概念
・開發工具的工作原理,以及它們與共享函式庫之間的關係
・如何編寫出色的shell script
你還能探索Linux的核心,並檢查使用者空間程序中的關鍵系統任務,包括系統呼叫、輸入和輸出以及檔案系統維護。結合背景、理論、實際範例和詳盡的解釋,本書將教你「控制作業系統」所需的全部知識。
作者簡介
Brian Ward從1993年開始接觸Linux。除了這本深受讀者喜愛的書之外,他的著作還包括:《The Linux Kernel HOWTO》、《The Book of VMware》、《The Linux
Problem Solver》。
Problem Solver》。
內容目錄
齊聲讚譽
致謝
前言
Chapter 1:概述
1.1 Linux作業系統中的抽象級別和層次
1.2 硬體:理解主記憶體
1.3 核心
1.4 使用者空間
1.5 使用者
1.6 學習前導
Chapter 2:基礎指令和目錄結構
2.1 Bourne shell: /bin/sh
2.2 shell的使用
2.3 基礎指令
2.4 瀏覽目錄
2.5 進階指令
2.6 更改密碼和替換shell
2.7 dot檔案
2.8 環境變數和shell變數
2.9 指令路徑
2.10 特殊字元
2.11 命令列編輯
2.12 文字編輯器
2.13 取得線上說明
2.14 shell輸入和輸出
2.15 理解錯誤訊息
2.16 查看和操控程序
2.17 檔案模式和權限
2.18 歸檔和壓縮檔案
2.19 Linux目錄結構基礎
2.20 以超級使用者的身分執行指令
2.21 學習前導
Chapter 3:設備管理
3.1 設備檔案
3.2 sysfs設備路徑
3.3 dd指令和設備
3.4 設備名稱總結
3.5 udev
3.6 詳解SCSI和Linux核心
Chapter 4:磁碟和檔案系統
4.1 為磁碟設備製作分割區
4.2 檔案系統
4.3 swap空間
4.4 邏輯卷冊管理程式(LVM)
4.5 學習前導:磁碟和使用者空間
4.6 深入傳統檔案系統
Chapter 5:Linux核心的啟動
5.1 啟動訊息
5.2 核心初始化和啟動選項
5.3 核心參數
5.4 開機載入程式
5.5 GRUB簡介
5.6 UEFI Secure Boot的問題
5.7 鏈式載入其他作業系統
5.8 開機載入程式細節
Chapter 6:使用者空間的啟動
6.1 init介紹
6.2 識別你的init
6.3 systemd
6.4 System V runlevel(執行級別)
6.5 System V init
6.6 關閉系統
6.7 initramfs
6.8 緊急啟動和單一使用者模式
6.9 學習前導
Chapter 7:系統設定日誌、系統時間、批次處理任務和使用者
7.1 系統日誌
7.2 /etc目錄結構
7.3 使用者管理檔案
7.4 getty和login
7.5 設定時間
7.6 使用cron和計時單元來調度日常任務
7.7 使用at進行一次性任務調度
7.8 以一般使用者執行計時單元
7.9 使用者存取的議題
7.10 PAM
7.11 學習前導
Chapter 8:程序與資源利用詳解
8.1 程序追蹤
8.2 使用lsof查看打開的檔案
8.3 追蹤程式執行和系統呼叫
8.4 執行緒
8.5 資源監控簡介
8.6 控制組(cgroup)
8.7 更深入的主題
Chapter 9:網路與設定
9.1 網路基礎
9.2 封包
9.3 網路層
9.4 網際網路層(Internet Layer)
9.5 路由和核心路由表
9.6 預設閘道
9.7 IPv6的位址和網路
9.8 基本ICMP和DNS工具
9.9 實體層與乙太網路
9.10 理解核心網路介面
9.11 設定網路介面
9.12 開機啟動的網路設定
9.13 手動和開機啟動的網路設定帶來的問題
9.14 一些網路設定管理器
9.15 解析主機名稱
9.16 localhost
9.17 傳輸層:TCP、UDP和服務(Service)
9.18 重新審視普通區域網路
9.19 理解DHCP
9.20 自動的IPv6網路設定
9.21 將Linux設定成路由器
9.22 私有網路(IPv4)
9.23 網路位址轉換(IP偽裝)
9.24 路由器與Linux
9.25 防火牆
9.26 乙太網路、IP、ARP和NDP
9.27 無線乙太網路
9.28 總結
Chapter 10:網路應用程式與服務
10.1 服務的基本概念
10.2 深入剖析
10.3 網路伺服器
10.4 在systemd之前的網路連線伺服器:inetd和xinetd
10.5 診斷工具
10.6 遠端程序呼叫
10.7 網路安全
10.8 學習前導
10.9 網路socket
10.10 Unix domain socket
Chapter 11:Shell Script
11.1 shell script基礎
11.2 引號與字面常數
11.3 特殊變數
11.4 結束碼
11.5 條件判斷
11.6 迴圈
11.7 指令替換
11.8 管理臨時檔案
11.9 here document
11.10 重要的shell script工具
11.11 子shell
11.12 在script中納入其他檔案
11.13 讀取使用者輸入
11.14 什麼時候(不)應該使用shell script
Chapter 12:在網路上傳輸檔案
12.1 快速複製
12.2 rsync
12.3 檔案共享
12.4 用Samba分享檔案
12.5 SSHFS
12.6 NFS
12.7 雲端儲存設備
12.8 網路檔案共享的狀態
Chapter 13:使用者環境
13.1 建立啟動檔案的規則
13.2 何時需要修改啟動檔案
13.3 shell啟動檔案的元素
13.4 啟動檔案的順序及範例
13.5 使用者預設設定
13.6 啟動檔案的一些陷阱
13.7 學習前導
Chapter 14:Linux桌面系統與列印概覽
14.1 桌面系統元件
14.2 你正在執行Wayland還是X?
14.3 近觀Wayland系統
14.4 近觀X Window系統
14.5 D-Bus
14.6 列印
14.7 其他有關桌面系統的話題
Chapter 15:開發工具
15.1 C 編譯器
15.2 make
15.3 Lex和Yacc
15.4 腳本語言
15.5 Java
15.6 學習前導:編譯套件
Chapter 16:從C程式碼編譯出軟體
16.1 軟體的建置系統
16.2 解開C原始碼套件
16.3 GNU autoconf
16.4 實踐安裝
16.5 打補丁
16.6 編譯和安裝的問題排查
16.7 學習前導
Chapter 17:虛擬化
17.1 虛擬機器
17.2 容器
17.3 執行中(Runtime-Based)虛擬化
參考文獻
致謝
前言
Chapter 1:概述
1.1 Linux作業系統中的抽象級別和層次
1.2 硬體:理解主記憶體
1.3 核心
1.4 使用者空間
1.5 使用者
1.6 學習前導
Chapter 2:基礎指令和目錄結構
2.1 Bourne shell: /bin/sh
2.2 shell的使用
2.3 基礎指令
2.4 瀏覽目錄
2.5 進階指令
2.6 更改密碼和替換shell
2.7 dot檔案
2.8 環境變數和shell變數
2.9 指令路徑
2.10 特殊字元
2.11 命令列編輯
2.12 文字編輯器
2.13 取得線上說明
2.14 shell輸入和輸出
2.15 理解錯誤訊息
2.16 查看和操控程序
2.17 檔案模式和權限
2.18 歸檔和壓縮檔案
2.19 Linux目錄結構基礎
2.20 以超級使用者的身分執行指令
2.21 學習前導
Chapter 3:設備管理
3.1 設備檔案
3.2 sysfs設備路徑
3.3 dd指令和設備
3.4 設備名稱總結
3.5 udev
3.6 詳解SCSI和Linux核心
Chapter 4:磁碟和檔案系統
4.1 為磁碟設備製作分割區
4.2 檔案系統
4.3 swap空間
4.4 邏輯卷冊管理程式(LVM)
4.5 學習前導:磁碟和使用者空間
4.6 深入傳統檔案系統
Chapter 5:Linux核心的啟動
5.1 啟動訊息
5.2 核心初始化和啟動選項
5.3 核心參數
5.4 開機載入程式
5.5 GRUB簡介
5.6 UEFI Secure Boot的問題
5.7 鏈式載入其他作業系統
5.8 開機載入程式細節
Chapter 6:使用者空間的啟動
6.1 init介紹
6.2 識別你的init
6.3 systemd
6.4 System V runlevel(執行級別)
6.5 System V init
6.6 關閉系統
6.7 initramfs
6.8 緊急啟動和單一使用者模式
6.9 學習前導
Chapter 7:系統設定日誌、系統時間、批次處理任務和使用者
7.1 系統日誌
7.2 /etc目錄結構
7.3 使用者管理檔案
7.4 getty和login
7.5 設定時間
7.6 使用cron和計時單元來調度日常任務
7.7 使用at進行一次性任務調度
7.8 以一般使用者執行計時單元
7.9 使用者存取的議題
7.10 PAM
7.11 學習前導
Chapter 8:程序與資源利用詳解
8.1 程序追蹤
8.2 使用lsof查看打開的檔案
8.3 追蹤程式執行和系統呼叫
8.4 執行緒
8.5 資源監控簡介
8.6 控制組(cgroup)
8.7 更深入的主題
Chapter 9:網路與設定
9.1 網路基礎
9.2 封包
9.3 網路層
9.4 網際網路層(Internet Layer)
9.5 路由和核心路由表
9.6 預設閘道
9.7 IPv6的位址和網路
9.8 基本ICMP和DNS工具
9.9 實體層與乙太網路
9.10 理解核心網路介面
9.11 設定網路介面
9.12 開機啟動的網路設定
9.13 手動和開機啟動的網路設定帶來的問題
9.14 一些網路設定管理器
9.15 解析主機名稱
9.16 localhost
9.17 傳輸層:TCP、UDP和服務(Service)
9.18 重新審視普通區域網路
9.19 理解DHCP
9.20 自動的IPv6網路設定
9.21 將Linux設定成路由器
9.22 私有網路(IPv4)
9.23 網路位址轉換(IP偽裝)
9.24 路由器與Linux
9.25 防火牆
9.26 乙太網路、IP、ARP和NDP
9.27 無線乙太網路
9.28 總結
Chapter 10:網路應用程式與服務
10.1 服務的基本概念
10.2 深入剖析
10.3 網路伺服器
10.4 在systemd之前的網路連線伺服器:inetd和xinetd
10.5 診斷工具
10.6 遠端程序呼叫
10.7 網路安全
10.8 學習前導
10.9 網路socket
10.10 Unix domain socket
Chapter 11:Shell Script
11.1 shell script基礎
11.2 引號與字面常數
11.3 特殊變數
11.4 結束碼
11.5 條件判斷
11.6 迴圈
11.7 指令替換
11.8 管理臨時檔案
11.9 here document
11.10 重要的shell script工具
11.11 子shell
11.12 在script中納入其他檔案
11.13 讀取使用者輸入
11.14 什麼時候(不)應該使用shell script
Chapter 12:在網路上傳輸檔案
12.1 快速複製
12.2 rsync
12.3 檔案共享
12.4 用Samba分享檔案
12.5 SSHFS
12.6 NFS
12.7 雲端儲存設備
12.8 網路檔案共享的狀態
Chapter 13:使用者環境
13.1 建立啟動檔案的規則
13.2 何時需要修改啟動檔案
13.3 shell啟動檔案的元素
13.4 啟動檔案的順序及範例
13.5 使用者預設設定
13.6 啟動檔案的一些陷阱
13.7 學習前導
Chapter 14:Linux桌面系統與列印概覽
14.1 桌面系統元件
14.2 你正在執行Wayland還是X?
14.3 近觀Wayland系統
14.4 近觀X Window系統
14.5 D-Bus
14.6 列印
14.7 其他有關桌面系統的話題
Chapter 15:開發工具
15.1 C 編譯器
15.2 make
15.3 Lex和Yacc
15.4 腳本語言
15.5 Java
15.6 學習前導:編譯套件
Chapter 16:從C程式碼編譯出軟體
16.1 軟體的建置系統
16.2 解開C原始碼套件
16.3 GNU autoconf
16.4 實踐安裝
16.5 打補丁
16.6 編譯和安裝的問題排查
16.7 學習前導
Chapter 17:虛擬化
17.1 虛擬機器
17.2 容器
17.3 執行中(Runtime-Based)虛擬化
參考文獻
ISBN: 9786263334120