Linux權威指南 從小白到系統管理員 下冊 原書第2版

David Both 譯 黨超輝//楊秀璋//徐香香//劉強

相關主題

商品描述

本書聚焦於資深Linux系統管理員的一系列進階知識,揭示Linux運行和編程的深層邏輯,覆蓋邏輯捲管理、進程管理和監控、特殊文件系統、正則表達式、通過命令行打印、編程和管理任務自動化、利用Ansible簡化遠程主機上的大規模自動化管理、配置定時任務、NetworkManager的功能、B樹文件系統及其特性、systemd相關知識、利用D-Bus和udev實現設備的即插即用管理、傳統Linux日誌文件的使用、用戶管理以及基本的防火墻管理操作等,幫助讀者成為Linux系統管理員。

目錄大綱

目  錄
譯者序
前 言
致 謝
作者簡介
第1章 邏輯捲管理 1
1.1 邏輯磁盤區管理的必要性 1
1.1.1 VirtualBox中磁盤空間不足 2
1.1.2 恢復安裝 2
1.2 邏輯磁盤區管理器的結構 2
1.3 擴展邏輯捲 3
1.4 建立和擴充捲組 6
1.4.1 建立新的磁盤區組 6
1.4.2 擴展現有捲組 9
1.5 使用技巧提示 10
1.6 高級功能 11
總結 11
練習 12
第2章 文件管理器 13
2.1 概論 13
2.1.1 文字接口 14
2.1.2 圖形接口 14
2.2 默認的檔案管理器 14
2.3 文字模式的文件管理器 14
2.4 其他文字模式的文件管理器 23
2.4.1 Vifm檔案管理器 24
2.4.2 nnn文件管理器 24
2.5 圖形檔案管理器 25
2.5.1 Krusader文件管理器 25
2.5.2 Thunar文件管理器 28
2.5.3 Dolphin文件管理器 28
2.5.4 XFE文件管理器 29
2.6 其他文件管理器 30
總結 31
練習 31
第3章 一切皆文件 32
3.1 什麼是文件 32
3.2 設備文件 33
3.3 udev設備管理守護程式 34
3.3.1 udev命名規則 34
3.3.2 udev規則變更的困擾 34
3.4 設備資料流 35
3.5 設備文件分類 36
3.6 設備文件的強大功能和
彈性 37
3.7 隨機性、零值及其他概念 40
3.8 備份主引導記錄 42
3.9 「一切皆文件」的涵義 48
總結 48
練習 49
第4章 進程管理 50
4.1 進程 50
4.2 工具 51
4.2.1 top 51
4.2.2 負載平均值 55
4.2.3 傳輸訊號 55
4.3 CPU佔用程式 56
4.4 進程調度 57
4.5 終止進程 60
4.6 其他交互式工具 61
4.6.1 atop 61
4.6.2 htop 63
4.6.3 Glances 68
4.6.4 其他工具 70
4.7 觀察者效應 74
總結 74
練習 75
第5章 特殊文件系統 76
5.1 概論 76
5.2 /proc檔案系統 77
5.3 /sys檔案系統 85
5.4 基於儲存的swap空間 88
5.4.1 Linux中swap的型別 89
5.4.2 內存抖動 89
5.4.3 基於儲存的swap空間的
合適大小 90
5.4.4 在非LVM磁盤環境中加入
swap空間 91
5.4.5 在LVM磁盤環境中加入
swap空間 95
5.4.6 LVM環境下的其他swap
配置 98
5.5 使用Zram拓展swap空間 98
5.5.1 Zram存在的意義 99
5.5.2 需要多少swap空間 99
5.5.3 管理Zram交換 100
5.5.4 創建Zram交換 101
5.5.5 增加Zram交換 102
5.6 優化swap空間 102
5.6.1 關於swap空間大小的
建議 103
5.6.2 移除傳統的swap分區
和文件 103
總結 105
練習 105
第6章 正規表示式 106
6.1 引入正規表示式 106
6.2 正規表示式入門指南 107
6.3 正規表示式擷取工具grep 113
6.3.1 資料流 114
6.3.2 正規表示式建構塊 114
6.3.3 重複操作 116
6.3.4 其他元字符 117
6.4 sed串流編輯器 118
6.5 其他實作正規表示式的工具 119
6.6 資源 120
總結 120
練習 120
第7章 印刷 122
7.1 概論 122
7.2 關於打印機 123
7.2.1 印刷語言 123
7.2.2 打印機和Linux 124
7.2.3 CUPS打印整合服務 125
7.2.4 建立打印佇列 127
7.3 打印到PDF檔 132
7.4 文件轉換工具 134
7.4.1 a2ps 135
7.4.2 ps2pdf 136
7.4.3 pr 137
7.4.4 ps2ascii 137
7.5 作業系統相關的轉換工具 138
7.5.1 unix2dos 139
7.5.2 dos2unix 141
7.5.3 unix2mac和mac2unix 141
7.6 其他工具 142
7.6.1 lpmove 142
7.6.2 wvText和odt2txt 144
總結 145
練習 145
第8章 硬件檢測 146
8.1 概論 146
8.2 dmidecode 147
8.3 lshw 152
8.4 lsusb 155
8.5 usb-devices 156
8.6 lspci 158
8.7 清理 160
總結 161
練習 161
第9章 命令列編碼 162
9.1 概論 162
9.2 程序的定義 163
9.3 入門級CLI程序 163
9.3.1 基本文法 164
9.3.2 輸出至螢幕 164
9.3.3 關於變項 166
9.4 控制運算子 168
9.4.1 回傳碼 168
9.4.2 運算子 169
9.5 程序流程控制 171
9.5.1 true和false 171
9.5.2 邏輯運算子 172
9.6 組合程序語句 180
9.7 擴展知識 184
9.7.1 大括號擴展 184
9.7.2 波浪線擴展 184
9.7.3 路徑名擴展 184
9.7.4 命令替換 186
9.7.5 算術擴展 187
9.8 for循環 188
9.9 其他循環 192
9.9.1 while循環 192
9.9.2 until循環 194
總結 194
練習 195
第10章 Bash腳本自動化 196
10.1 概論 196
10.2 為什麼要使用shell腳本 197
10.2.1 shell腳本 197
10.2.2 腳本與編譯程式 198
10.3 更新 198
10.3.1 關於更新 199
10.3.2 建立需求清單 199
10.3.3 CLI程式 200
10.3.4 安全性 200
10.3.5 將CLI程式轉換為腳本 200
10.3.6 新增邏輯 201
10.3.7 僅限root使用者使用 202
10.3.8 新增命令列選項 203
10.3.9 檢查更新 205
10.3.10 是否需要重啟 206
10.3.11 新增幫助函數 208
10.3.12 完成腳本 211
10.4 關於測試 212
10.4.1 在生產中測試 212
10.4.2 模糊測試 212
10.4.3 測試腳本 213
10.5 授權 215
10.6 自動化測試 217
10.7 更高等級的自動化 217
10.8 清理 219
總結 219
練習 220
第11章 自動化工具Ansible 221
11.1 Ansible初體驗 221
11.2 Ansible的管控策略 222
11.3 筆者所遇到的難題 222
11.4 快速上手 222
11.5 安裝Ansible 223
11.6 設定檔 223
11.6.1 ansible.cfg檔 223
11.6.2 準備使用Ansible 223
11.6.3 Ansible Facts 227
11.6.4 hosts文件 228
11.6.5 建立hosts檔案 229
11.7 Ansible模組 229
11.8 playbooks簡介 229
11.8.1 輸出 231
11.8.2 文件 231
11.8.3 多次運行playbook 232
11.9 如何建立Ansible playbook 232
11.9.1 什麼是playbook 232
11.9.2 更新重建 233
11.9.3 明確需求 233
11.9.4 語法 234
11.9.5 創建playbook 234
11.10 面向多系統的Ansible 241
11.10.1 第二個場景 241
11.10.2 第三個場景 242
總結 244
資源 244
練習 245
第12章 時間與自動化 246
12.1 概論 246
12.2 使用chrony校準時間 247
12.2.1 NTP服務器層次結構 247
12.2.2 NTP服務選擇 247
12.2.3 chrony架構 248
12.2.4 chrony服務的客戶端
配置 248
12.2.5 chronyc:一個實用的
交互式工具 251
12.3 利用cron實現定時自動化 252
12.3.1 cron守護程式(crond) 252
12.3.2 crontab 252
12.3.3 cron範例 254
12.3.4 crontab條目 256
12.3.5 建立crontab檔 256
12.4 其他調度選項 259
12.4.1 /etc/cron.hourly 259
12.4.2 anacron 259
12.5 關於cron的思考 261
12.5.1 調度任務的小貼士 261
12.5.2 安全性 261
12.5.3 cron資源 262
12.6 at命令 262
12.6.1 語法 262
12.6.2 時間規範 262
12.6.3 安全性 266
12.7 設定硬件時鐘 267
12.8 關於時區 267
12.9 清理 270
總結 270
練習 270
第13章 網絡 272
13.1 概述 272
13.2 網絡基礎概念 273
13.2.1 網絡術語定義 273
13.2.2 MAC位址 275
13.2.3 IP位址 278
13.3 IP位址分配 280
13.4 TCP/IP 280
13.4.1 TCP/IP網絡模型 280
13.4.2 一個簡單的範例 282
13.5 CIDR 282
13.5.1 網絡類別 283
13.5.2 CIDR的出現 285
13.5.3 可變長度子網絡遮罩 287
13.6 DHCP客戶端設定 290
13.7 NIC的命名規則 290
13.8 舊版接口設定檔 292
13.8.1 何時需要接口設定檔 292
13.8.2 接口設定檔 293
13.8.3 route-<interface> 文件 294
13.9 域名服務 294
13.9.1 域名解析原理 295
13.9.2 使用/etc/hosts檔案 296
13.10 網絡路由簡介 299
13.11 iptraf-ng工具 304
總結 307
練習 308
第14章 網絡管理 309
14.1 概論 309
14.2 網絡啟動 310
14.2.1 NetworkManager服務 310
14.2.2 NetworkManager替代了
什麼 310
14.2.3 NetworkManager的功能 311
14.3 查看接口配置 312
14.4 NetworkManager密鑰檔 319
14.5 為何遷移設定檔 319
14.6 遷移實驗 320
14.7 沒有ifcfg設定檔怎麼辦 325
14.8 恢復至DHCP設定 325
14.9 建立新的金鑰檔案 325
14.9.1 文字編輯器 325
14.9.2 使用nmtui工具 325
14.9.3 使用nmcli工具 327
14.9.4 使用GUI NetworkManager
連接編輯器 328
14.10 如何使用命令列管理無線
網絡 330
總結 335第15章 BtrFS 336
15.1 概論 336
15.2 BtrFS與EXT4的對比 338
15.2.1 BtrFS的優勢 338
15.2.2 BtrFS和EXT4的相似性 339
15.2.3 EXT4的優點 339
15.3 使用BtrFS的檔案系統結構 339
15.4 BtrFS如何運作 340
15.5 創建BtrFS 341
15.6 掛載BtrFS 343
15.7 探索BtrFS捲 345
15.8 簡化BtrFS捲 348
15.9 什麼是子捲 350
15.10 使用BtrFS子捲 351
15.11 將EXT轉換為BtrFS 353
15.12 使用BtrFS作為swap空間 353
15.13 清理 353
15.14 OpenZFS:替代方案 353
總結 353
第16章 初步瞭解systemd 355
16.1 概述 355
16.2 學會熱愛systemd 356
16.2.1 Linux啟動過程 356
16.2.2 systemd之爭 356
16.2.3 SystemV的優勢 356
16.2.4 systemd的優勢 357
16.2.5 真正的問題 357
16.2.6 以前的工作 358
16.3 systemd統治Linux世界了嗎 358
16.3.1 更多資料供管理員參考 359
16.3.2 systemd標準化配置 360
16.3.3 過渡時的困難點 360
16.4 systemd任務 361
16.4.1 systemd架構 362
16.4.2 使用systemd啟動Linux 362
16.4.3 PID 1進程systemd 363
16.5 探索啟動過程 366
16.5.1 GRUB 367
16.5.2 目標 370
16.5.3 目前目標概述 370
16.6 使用systemd單元 375
16.6.1 systemd套件 375
16.6.2 單元文件 375
16.6.3 systemctl 376
16.6.4 服務單元 380
16.6.5 傳統掛載方式 383
16.6.6 建立掛載單元 386
總結 387
練習 388
第17章 systemd高階功能 389
17.1 systemd日曆事件與時間跨度 389
17.1.1 術語定義 389
17.1.2 日曆事件表達式 390
17.1.3 探索systemd時間語法 391
17.2 活用systemd日誌 396
17.2.1 日誌系統 396
17.2.2 systemd日誌服務 397
17.2.3 配置 397
17.2.4 關於二進制資料格式
的爭論 398
17.2.5 日誌管理利器:journalctl 399
17.2.6 日誌儲存使用 407
17.3 分析systemd的啟動與設定 411
17.4 使用systemd管理啟動機制 420
總結 431
練習 432
第18章 systemd終曲 433
18.1 概述 433
18.2 日曆事件表達式回顧 433
18.3 systemd定時器 434
18.3.1 創建定時器 437
18.3.2 定時器型式 443
18.4 使用systemd-homed實現
主目錄安全 444
18.4.1 systemd-homed的定義 444
18.4.2 創建受控用戶 445
18.4.3 homectl命令 445
18.4.4 局限性 445
18.4.5 可選性 445
18.5 使用systemd進行資源管理 445
18.5.1 使用cgroups對進程
進行管理 446
18.5.2 探索cgroups的層次
結構 448
18.5.3 使用systemd管理
cgroups 451
總結 452
練習 452
第19章 D-Bus和udev 453
19.1 混亂的/dev 453
19.1.1 D-Bus簡介 453
19.1.2 udev簡介 454
19.2 udev的命名規則 456
19.3 udev入門指南 457
19.4 精準細化udev規則 465
19.5 udev規則配置的安全性問題 466
19.6 udev的實用性 467
總結 467
練習 468
第20章 使用傳統日誌 469
20.1 關於傳統日誌 469
20.2 logrotate工具 471
20.3 日誌檔內容 474
20.3.1 messages檔 474
20.3.2 secure檔 475
20.3.3 dmesg命令 477
20.4 追蹤日誌檔 479
20.5 logwatch工具 480
總結 488
練習 488
第21章 用戶管理 490
21.1 概述 490
21.2 root帳號 490
21.3 你自己的使用者帳號 491
21.4 你的主目錄 491
21.5 用戶帳戶和用戶群組 491
21.5.1 /etc/passwd文件 493
21.5.2 nologin shells機制 495
21.5.3 /etc/shadow文件 495
21.5.4 /etc/group文件 498
21.5.5 /etc/login.defs檔 499
21.5.6 帳戶設定檔 499
21.6 密碼安全 499
21.6.1 密碼加密 500
21.6.2 產生強密碼 501
21.6.3 密碼品質 503
21.7 管理用戶帳號 504
21.7.1 建立新帳戶 504
21.7.2 透過編輯檔案建立新使用者 507
21.7.3 鎖定使用者帳號 509
21.7.4 刪除使用者帳號 509
21.8 強制註銷帳戶 511
21.9 設定資源限制 512
總結 514
練習 514
第22章 管理防火牆 515
22.1 防火牆介紹 515
22.2 防火牆規則 517
22.3 防火牆工具 518
22.4 防火牆配置 518
22.5 網絡安全現況 519
22.6 firewalld 519
22.6.1 firewalld區域 519
22.6.2 --reload指令 533
22.6.3 防火牆區域文件 533
22.6.4 緊急模式 536
22.6.5 使用GUI設定防火牆 537
22.7 nftables 537
22.8 阻止出站流量 538
22.9 Fail2ban 539
總結 542
練習 543