第1章 初識Shell 1
1.1 Shell如何連接用戶和內核 1
1.2 Shell連接其他程序 2
1.3 Shell同樣支持編程 2
1.4 Shell是一種腳本語言 3
1.5 Shell的各種版本 3
1.5.1 Bourne Shell 4
1.5.2 C Shell 4
1.5.3 Bash Shell 4
1.5.4 查看Shell版本 4
1.6 Shell是運維工程師必備技能 5
1.7 Shell變量的定義 7
1.8 Shell變量的類型 7
1.8.1 自定義變量 7
1.8.2 環(huán)境變量 8
1.8.3 位置變量 9
1.8.4 預定義變量 9
1.9 Shell變量的賦值 10
1.9.1 直接賦值 10
1.9.2 從鍵盤讀入賦值 10
1.9.3 使用命令行參數賦值 11
1.9.4 利用命令的輸出結果賦值 11
1.9.5 從文件中讀入數據賦值 12
1.10 Shell變量的運算 13
1.10.1 expr數值運算命令 13
1.10.2 “(())“或“[ ]”數值運算命令 13
1.10.3 let數值運算命令 14
1.10.4 Shell小數運算 14
1.11 Shell變量的刪除、替換和替代 14
1.11.1 Shell變量的刪除 14
1.11.2 Shell變量的替換 15
1.11.3 Shell變量的替代 16
1.12 Shell變量的自增 16
1.13 Shell變量中的特殊符號 17
1.14 本章小結 21
1.15 習題 21
第2章 Shell條件測試 23
2.1 Shell中的條件測試語句 23
2.1.1 文件測試 23
2.1.2 整數測試 24
2.1.3 字符串測試 25
2.1.4 邏輯運算符 26
2.2 if條件語句 27
2.2.1 if單分支 27
2.2.2 if雙分支 27
2.2.3 if多分支 28
2.2.4 if語句配置yum源實戰(zhàn)腳本 29
2.3 case條件語句 30
2.4 case條件語句案例實戰(zhàn) 31
2.4.1 case刪除用戶判斷 31
2.4.2 case實現(xiàn)系統(tǒng)工具箱的使用 32
2.4.3 case實現(xiàn)jumpserver 33
2.4.4 case實現(xiàn)多版本PHP安裝 35
2.5 本章小結 37
2.6 習題 37
第3章 Shell循環(huán) 39
3.1 for循環(huán)語法結構 39
3.2 for循環(huán)語句案例實戰(zhàn) 40
3.2.1 for循環(huán)語句實現(xiàn)批量主機ping探測 40
3.2.2 for循環(huán)語句實現(xiàn)批量用戶創(chuàng)建 41
3.2.3 for循環(huán)語句實現(xiàn)文件中批量用戶創(chuàng)建 42
3.3 expect交互式公鑰推送 43
3.3.1 expect實現(xiàn)非交互登錄 43
3.3.2 expect實現(xiàn)非交互傳輸文件 44
3.3.3 expect實現(xiàn)批量主機公鑰推送 45
3.3.4 for循環(huán)語句實現(xiàn)批量主機密碼修改 48
3.3.5 for循環(huán)語句實現(xiàn)批量遠程主機SSH配置 49
3.4 while循環(huán)和until循環(huán) 50
3.4.1 while循環(huán)語句語法結構 51
3.4.2 until循環(huán)語句語法結構 51
3.5 循環(huán)語句案例實戰(zhàn) 51
3.5.1 while循環(huán)語句實現(xiàn)批量用戶創(chuàng)建 51
3.5.2 while循環(huán)語句和until循環(huán)語句測試遠程主機連接 52
3.5.3 for、while、until終極對決 53
3.6 Shell的并發(fā)控制 55
3.6.1 for循環(huán)實現(xiàn)Shell的并發(fā)控制 55
3.6.2 for后臺循環(huán)實現(xiàn)Shell的并發(fā)控制 56
3.7 Shell的并發(fā)控制案例實戰(zhàn) 56
3.7.1 for循環(huán)實現(xiàn)Shell的并發(fā)控制案例實戰(zhàn) 56
3.7.2 for后臺循環(huán)實現(xiàn)Shell的并發(fā)控制案例實戰(zhàn) 57
3.7.3 Linux管道實現(xiàn)Shell的并發(fā)控制案例實戰(zhàn) 58
3.8 本章小結 59
3.9 習題 60
第4章 Shell數組 61
4.1 Shell數組的基本概念 61
4.2 Shell數組的類型 61
4.2.1 普通數組 62
4.2.2 關聯(lián)數組 62
4.2.3 定義數組的類型 62
4.3 Shell數組的定義 62
4.3.1 直接定義數組 63
4.3.2 下標定義數組 63
4.3.3 間接定義數組 63
4.3.4 從文件中讀入定義數組 64
4.4 Shell數組的遍歷及賦值 64
4.4.1 常見的訪問Shell數組表達式 64
4.4.2 while循環(huán)實現(xiàn)Shell數組的遍歷 65
4.4.3 for循環(huán)實現(xiàn)Shell數組的遍歷 66
4.4.4 Shell數組的賦值 66
4.4.5 Shell數組的刪除 67
4.4.6 Shell數組的截取和替換 67
4.5 Shell數組腳本實戰(zhàn) 68
4.5.1 array數組實現(xiàn)性別統(tǒng)計 68
4.5.2 array數組統(tǒng)計不同類型Shell的數量 69
4.5.3 array數組統(tǒng)計TCP連接狀態(tài)數量 70
4.6 本章小結 71
4.7 習題 71
第5章 Shell編程中函數的用法 73
5.1 Shell函數的概念 73
5.2 Shell函數的語法 74
5.3 Shell函數的調用 74
5.3.1 Shell函數的傳參介紹 74
5.3.2 Shell函數的返回值介紹 75
5.4 Shell函數的應用實戰(zhàn) 75
5.4.1 腳本中調用Shell函數 75
5.4.2 Shell函數的返回值 77
5.4.3 Shell函數的位置參數 78
5.4.4 Shell函數數組變量的傳參 78
5.4.5 Shell函數的返回輸出數組變量 79
5.5 Shell內置命令和外部命令的區(qū)別 80
5.6 Shell內置命令 80
5.6.1 循環(huán)結構中break、continue、return和exit的區(qū)別 80
5.6.2 break、continue、exit命令執(zhí)行流程圖 81
5.6.3 break命令和continue命令案例實戰(zhàn) 82
5.6.4 shift命令 84
5.7 本章小結 84
5.8 習題 85
第6章 正則表達式 86
6.1 正則表達式概念 86
6.2 正則表達式元字符 87
6.3 正則表達式語法 88
6.4 正則表達式運算符優(yōu)先級 89
6.5 正則表達式匹配規(guī)則 90
6.5.1 基本模式匹配 90
6.5.2 字符簇 90
6.6 grep命令 92
6.6.1 grep命令簡介 92
6.6.2 grep命令語法格式 93
6.6.3 grep命令使用方式 93
6.6.4 grep命令結合正則表達式使用 95
6.6.5 grep命令結合正則表達式案例實戰(zhàn) 97
6.7 本章小結 100
6.8 習題 101
第7章 流編輯器sed 102
7.1 sed工作原理 102
7.2 sed語法格式及特點 103
7.2.1 sed語法格式 103
7.2.2 sed特點 104
7.3 sed用法 104
7.4 sed支持正則表達式 105
7.5 sed案例實戰(zhàn) 108
7.6 本章小結 114
7.7 習題 114
第8章 awk文本處理工具 116
8.1 awk簡介 116
8.2 awk工作流程 117
8.3 awk工作原理 117
8.4 awk語法格式 118
8.4.1 awk基本語法格式 118
8.4.2 awk語法選項實例 118
8.5 awk內置變量 123
8.6 awk模式 128
8.7 awk流程控制 131
8.7.1 if條件語句 132
8.7.2 while循環(huán) 133
8.7.3 for循環(huán) 135
8.7.4 break命令、continue命令、exit命令 136
8.7.5 數組 137
8.8 awk中的函數 141
8.8.1 awk內建函數 141
8.8.2 awk自定義函數 142
8.9 本章小結 144
8.10 習題 145
第9章 系統(tǒng)性能分析 146
9.1 常見的性能分析工具 146
9.1.1 vmstat命令 146
9.1.2 sar系統(tǒng)活動取樣命令 149
9.1.3 iostat性能分析命令 150
9.1.4 top性能監(jiān)控命令 152
9.1.5 ps實時監(jiān)控系統(tǒng)命令 155
9.1.6 netstat監(jiān)控網絡狀態(tài)命令 160
9.1.7 ifconfig查看地址命令 166
9.1.8 ss顯示連接狀態(tài)命令 170
9.1.9 free顯示內存命令 176
9.1.10 df查看磁盤占用命令 178
9.1.11 dstat動態(tài)顯示系統(tǒng)負載命令 181
9.1.12 iotop查看I/O命令 184
9.1.13 iftop實時監(jiān)控命令 185
9.2 項目系統(tǒng)資源性能瓶頸腳本 187
9.3 本章小結 197
9.4 習題 197
第10章 項目實戰(zhàn)集 199
10.1 服務器存活狀態(tài)腳本項目 199
10.2 Nginx日志分析項目 201
10.3 Zabbix信息收集項目 208
10.3.1 Zabbix監(jiān)控TCP狀態(tài)信息收集 208
10.3.2 Zabbix監(jiān)控MySQL狀態(tài)信息收集 210
10.3.3 Zabbix監(jiān)控內存信息收集 213
10.4 多機部署MySQL數據庫項目 214
10.5 多機部署LNMP項目 216
10.6 本章小結 218
10.7 習題 218