??Nginx高性能Web服務器實戰:從協議原理到運維優化??

目錄

前言

一、Web基礎概念

1.1 什么是Web?

1.2 B/S架構模型

1.3 Web請求與響應流程

1.4 靜態資源 vs 動態資源

二、HTTP/HTTPS協議詳解

2.1 HTTP與HTTPS區別

2.2 HTTPS握手流程

2.3 HTTP狀態碼大全

三、Nginx核心知識

3.1 Nginx簡介

3.2 Nginx vs Apache

3.3 Nginx進程結構

四、Nginx安裝與配置

4.1 下載Nginx

4.2 關閉防火墻,并且安裝

4.3 創建用戶并解壓

4.4 編譯安裝Nginx

4.5 檢查、啟動、重啟、停止 nginx服務

4.6 啟動

4.7 查看當前的版本

4.8添加Nginx服務系統

4.9 運行

五、awk的使用方法

5.1 統計以/bin/bash結尾的行數

5.2 統計/etc/passwd中第三列大于等于200的每一行

5.3 第三列大于等于1000的

5.4 打印行號和每一行

5.5 打印行數和每一行的第一列

5.6 先打印行號,再打印每一行

5.7 空間內存使用率

5.8 統計在線用戶數

5.9 getline 隔一行打印一下

5.10 getline 隔一行打印一下

5.11 獲取當前主機名

總結??


前言

在當今互聯網技術體系中,Web服務的高效運作離不開底層協議的支撐與服務器技術的優化。本書從HTTP/HTTPS協議的本質出發,深入解析Nginx高性能服務器的架構原理與實戰配置,并結合Shell與Awk等工具,探索自動化運維與數據處理的進階技巧。無論您是開發者、運維工程師還是技術愛好者,都將通過本書獲得構建穩定、安全、高性能Web服務的系統化知識體系。

一、Web基礎概念

1.1 什么是Web?

Web(World Wide Web,萬維網)是運行在互聯網之上的超文本信息系統,它依賴于HTTP/HTTPS協議實現瀏覽器與服務器之間的交互。

??核心特點:??

  • ???分布式??:資源分布在世界各地的服務器上
  • ???跨平臺??:只要有瀏覽器就能訪問資源
  • ???無狀態??:每次HTTP請求都是獨立的(除非使用Cookie/Session)

1.2 B/S架構模型

Web采用B/S架構(Browser/Server):

  • ???Browser(瀏覽器)??:用戶入口,發送請求、渲染頁面
  • ???Server(服務器)??:接收請求,返回所需資源或動態內容
用戶瀏覽器 → Web服務器(Nginx/Apache) ↓ 應用服務器(PHP/Python/Java) ↓ 數據庫(MySQL/Redis)

1.3 Web請求與響應流程

  1. 1.用戶輸入URL
  2. 2.DNS解析域名
  3. 3.建立TCP連接(3次握手)
  4. 4.發送HTTP請求(GET/POST)
  5. 5.服務器處理請求:
    • ?靜態資源直接返回
    • ?動態請求轉發到應用服務器
  6. 6.返回HTTP響應
  7. 7.瀏覽器渲染頁面

1.4 靜態資源 vs 動態資源

類型特點示例
靜態資源直接返回,速度快HTML、CSS、圖片、JS文件
動態資源服務器端生成,支持交互PHP腳本、Python/Java應用

二、HTTP/HTTPS協議詳解

2.1 HTTP與HTTPS區別

  • ???HTTP??:明文傳輸,不安全
  • ???HTTPS??:HTTP + SSL/TLS加密,防止中間人攻擊

2.2 HTTPS握手流程

  1. 1.客戶端Hello(支持的加密算法)
  2. 2.服務端Hello + 證書
  3. 3.客戶端驗證證書
  4. 4.協商臨時密鑰
  5. 5.開始加密通信

2.3 HTTP狀態碼大全

狀態碼類別說明
1xx信息性請求已接收,繼續處理
2xx成功請求成功處理
3xx重定向需要進一步操作
4xx客戶端錯誤請求語法錯誤或無法實現
5xx服務器錯誤服務器處理請求失敗

??常用狀態碼:??

  • ?200 OK:請求成功
  • ?301/302:重定向
  • ?404:頁面不存在
  • ?403:禁止訪問
  • ?500:服務器內部錯誤
  • ?502/504:網關錯誤

三、Nginx核心知識

3.1 Nginx簡介

Nginx是一個高性能的HTTP和反向代理服務器,特點:

  • ?輕量級,內存占用小
  • ?支持高并發(單機5萬+并發)
  • ?熱部署能力
  • ?優秀的反向代理和負載均衡

3.2 Nginx vs Apache

特性NginxApache
架構事件驅動進程/線程驅動
并發能力極強一般
資源消耗較高
熱部署支持不支持
靜態文件處理高效一般

3.3 Nginx進程結構

  • ???Master進程??:管理Worker進程
  • ???Worker進程??:實際處理請求(數量通常=CPU核心數)

四、Nginx安裝與配置

4.1 下載Nginx

[root@zard3 shelldemo]# wget  https://nginx.org/download/nginx-1.20.2.tar.gz 
--2025-09-04 16:42:11--  https://nginx.org/download/nginx-1.20.2.tar.gz
正在解析主機 nginx.org (nginx.org)... 52.58.199.22, 3.125.197.172, 2a05:d014:5c0:2600::6, ...
正在連接 nginx.org (nginx.org)|52.58.199.22|:443... 已連接。
已發出 HTTP 請求,正在等待回應... 200 OK
長度:1062124 (1.0M) [application/octet-stream]
正在保存至: “nginx-1.20.2.tar.gz”100%[===========================================================================================>] 1,062,124    563KB/s 用時 1.8s   2025-09-04 16:42:14 (563 KB/s) - 已保存 “nginx-1.20.2.tar.gz” [1062124/1062124])

4.2 關閉防火墻,并且安裝

[root@zard3 ~]# yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                                                          | 4.4 kB  00:00:00     * epel: d2lzkl7pfhq30w.cloudfront.net
base                                                                                                          | 3.6 kB  00:00:00     
extras                                                                                                        | 2.9 kB  00:00:00     
file:///mnt/repodata/repomd.xml: [Errno 14] curl#37 - "Couldn't open file /mnt/repodata/repomd.xml"
正在嘗試其它鏡像。
mysql-connectors-community                                                                                    | 3.0 kB  00:00:00     
mysql-tools-community                                                                                         | 3.0 kB  00:00:00     
mysql80-community                                                                                             | 3.0 kB  00:00:00     
updates                                                                                                       | 2.9 kB  00:00:00     
軟件包 gcc-4.8.5-44.el7.x86_64 已安裝并且是最新版本
軟件包 gcc-c++-4.8.5-44.el7.x86_64 已安裝并且是最新版本
軟件包 1:make-3.82-24.el7.x86_64 已安裝并且是最新版本
軟件包 pcre-8.32-17.el7.x86_64 已安裝并且是最新版本
軟件包 pcre-devel-8.32-17.el7.x86_64 已安裝并且是最新版本
正在解決依賴關系
--> 正在檢查事務
---> 軟件包 openssl.x86_64.1.1.0.2k-19.el7 將被 升級
---> 軟件包 openssl.x86_64.1.1.0.2k-26.el7_9 將被 更新
--> 正在處理依賴關系 openssl-libs(x86-64) = 1:1.0.2k-26.el7_9,它被軟件包 1:openssl-1.0.2k-26.el7_9.x86_64 需要
---> 軟件包 openssl-devel.x86_64.1.1.0.2k-26.el7_9 將被 安裝
--> 正在處理依賴關系 krb5-devel(x86-64),它被軟件包 1:openssl-devel-1.0.2k-26.el7_9.x86_64 需要
---> 軟件包 zlib.x86_64.0.1.2.7-18.el7 將被 升級
---> 軟件包 zlib.x86_64.0.1.2.7-21.el7_9 將被 更新
---> 軟件包 zlib-devel.x86_64.0.1.2.7-18.el7 將被 升級
---> 軟件包 zlib-devel.x86_64.0.1.2.7-21.el7_9 將被 更新
--> 正在檢查事務
---> 軟件包 krb5-devel.x86_64.0.1.15.1-55.el7_9 將被 安裝
--> 正在處理依賴關系 libkadm5(x86-64) = 1.15.1-55.el7_9,它被軟件包 krb5-devel-1.15.1-55.el7_9.x86_64 需要
--> 正在處理依賴關系 krb5-libs(x86-64) = 1.15.1-55.el7_9,它被軟件包 krb5-devel-1.15.1-55.el7_9.x86_64 需要
--> 正在處理依賴關系 libverto-devel,它被軟件包 krb5-devel-1.15.1-55.el7_9.x86_64 需要
--> 正在處理依賴關系 libselinux-devel,它被軟件包 krb5-devel-1.15.1-55.el7_9.x86_64 需要
--> 正在處理依賴關系 libcom_err-devel,它被軟件包 krb5-devel-1.15.1-55.el7_9.x86_64 需要
--> 正在處理依賴關系 keyutils-libs-devel,它被軟件包 krb5-devel-1.15.1-55.el7_9.x86_64 需要
---> 軟件包 openssl-libs.x86_64.1.1.0.2k-19.el7 將被 升級
---> 軟件包 openssl-libs.x86_64.1.1.0.2k-26.el7_9 將被 更新
--> 正在檢查事務
---> 軟件包 keyutils-libs-devel.x86_64.0.1.5.8-3.el7 將被 安裝
---> 軟件包 krb5-libs.x86_64.0.1.15.1-50.el7 將被 升級
--> 正在處理依賴關系 krb5-libs(x86-64) = 1.15.1-50.el7,它被軟件包 krb5-workstation-1.15.1-50.el7.x86_64 需要
---> 軟件包 krb5-libs.x86_64.0.1.15.1-55.el7_9 將被 更新
---> 軟件包 libcom_err-devel.x86_64.0.1.42.9-19.el7 將被 安裝
---> 軟件包 libkadm5.x86_64.0.1.15.1-50.el7 將被 升級
---> 軟件包 libkadm5.x86_64.0.1.15.1-55.el7_9 將被 更新
---> 軟件包 libselinux-devel.x86_64.0.2.5-15.el7 將被 安裝
--> 正在處理依賴關系 libsepol-devel(x86-64) >= 2.5-10,它被軟件包 libselinux-devel-2.5-15.el7.x86_64 需要
--> 正在處理依賴關系 pkgconfig(libsepol),它被軟件包 libselinux-devel-2.5-15.el7.x86_64 需要
---> 軟件包 libverto-devel.x86_64.0.0.2.5-4.el7 將被 安裝
--> 正在檢查事務
---> 軟件包 krb5-workstation.x86_64.0.1.15.1-50.el7 將被 升級
---> 軟件包 krb5-workstation.x86_64.0.1.15.1-55.el7_9 將被 更新
---> 軟件包 libsepol-devel.x86_64.0.2.5-10.el7 將被 安裝
--> 解決依賴關系完成依賴關系解決=====================================================================================================================================Package                               架構                     版本                                 源                         大小
=====================================================================================================================================
正在安裝:openssl-devel                         x86_64                   1:1.0.2k-26.el7_9                    updates                   1.5 M
正在更新:openssl                               x86_64                   1:1.0.2k-26.el7_9                    updates                   494 kzlib                                  x86_64                   1.2.7-21.el7_9                       updates                    90 kzlib-devel                            x86_64                   1.2.7-21.el7_9                       updates                    50 k
為依賴而安裝:keyutils-libs-devel                   x86_64                   1.5.8-3.el7                          base                       37 kkrb5-devel                            x86_64                   1.15.1-55.el7_9                      updates                   273 klibcom_err-devel                      x86_64                   1.42.9-19.el7                        base                       32 klibselinux-devel                      x86_64                   2.5-15.el7                           base                      187 klibsepol-devel                        x86_64                   2.5-10.el7                           base                       77 klibverto-devel                        x86_64                   0.2.5-4.el7                          base                       12 k
為依賴而更新:krb5-libs                             x86_64                   1.15.1-55.el7_9                      updates                   810 kkrb5-workstation                      x86_64                   1.15.1-55.el7_9                      updates                   821 klibkadm5                              x86_64                   1.15.1-55.el7_9                      updates                   180 kopenssl-libs                          x86_64                   1:1.0.2k-26.el7_9                    updates                   1.2 M事務概要
=====================================================================================================================================
安裝  1 軟件包 (+6 依賴軟件包)
升級  3 軟件包 (+4 依賴軟件包)總計:5.7 M
總下載量:2.1 M
Downloading packages:
(1/7): keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm                                                             |  37 kB  00:00:00     
(2/7): libselinux-devel-2.5-15.el7.x86_64.rpm                                                                 | 187 kB  00:00:00     
(3/7): libsepol-devel-2.5-10.el7.x86_64.rpm                                                                   |  77 kB  00:00:00     
(4/7): libcom_err-devel-1.42.9-19.el7.x86_64.rpm                                                              |  32 kB  00:00:00     
(5/7): krb5-devel-1.15.1-55.el7_9.x86_64.rpm                                                                  | 273 kB  00:00:01     
(6/7): libverto-devel-0.2.5-4.el7.x86_64.rpm                                                                  |  12 kB  00:00:00     
(7/7): openssl-devel-1.0.2k-26.el7_9.x86_64.rpm                                                               | 1.5 MB  00:00:00     
-------------------------------------------------------------------------------------------------------------------------------------
總計                                                                                                 1.0 MB/s | 2.1 MB  00:00:02     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在更新    : zlib-1.2.7-21.el7_9.x86_64                                                                                      1/21 正在更新    : krb5-libs-1.15.1-55.el7_9.x86_64                                                                                2/21 正在更新    : 1:openssl-libs-1.0.2k-26.el7_9.x86_64                                                                           3/21 正在更新    : libkadm5-1.15.1-55.el7_9.x86_64                                                                                 4/21 正在更新    : zlib-devel-1.2.7-21.el7_9.x86_64                                                                                5/21 正在安裝    : libcom_err-devel-1.42.9-19.el7.x86_64                                                                           6/21 正在安裝    : libsepol-devel-2.5-10.el7.x86_64                                                                                7/21 正在安裝    : libselinux-devel-2.5-15.el7.x86_64                                                                              8/21 正在安裝    : libverto-devel-0.2.5-4.el7.x86_64                                                                               9/21 正在安裝    : keyutils-libs-devel-1.5.8-3.el7.x86_64                                                                         10/21 正在安裝    : krb5-devel-1.15.1-55.el7_9.x86_64                                                                              11/21 正在安裝    : 1:openssl-devel-1.0.2k-26.el7_9.x86_64                                                                         12/21 正在更新    : krb5-workstation-1.15.1-55.el7_9.x86_64                                                                        13/21 正在更新    : 1:openssl-1.0.2k-26.el7_9.x86_64                                                                               14/21 清理        : 1:openssl-1.0.2k-19.el7.x86_64                                                                                 15/21 清理        : krb5-workstation-1.15.1-50.el7.x86_64                                                                          16/21 清理        : zlib-devel-1.2.7-18.el7.x86_64                                                                                 17/21 清理        : libkadm5-1.15.1-50.el7.x86_64                                                                                  18/21 清理        : 1:openssl-libs-1.0.2k-19.el7.x86_64                                                                            19/21 清理        : krb5-libs-1.15.1-50.el7.x86_64                                                                                 20/21 清理        : zlib-1.2.7-18.el7.x86_64                                                                                       21/21 驗證中      : 1:openssl-devel-1.0.2k-26.el7_9.x86_64                                                                          1/21 驗證中      : keyutils-libs-devel-1.5.8-3.el7.x86_64                                                                          2/21 驗證中      : libverto-devel-0.2.5-4.el7.x86_64                                                                               3/21 驗證中      : libkadm5-1.15.1-55.el7_9.x86_64                                                                                 4/21 驗證中      : 1:openssl-libs-1.0.2k-26.el7_9.x86_64                                                                           5/21 驗證中      : libsepol-devel-2.5-10.el7.x86_64                                                                                6/21 驗證中      : libselinux-devel-2.5-15.el7.x86_64                                                                              7/21 驗證中      : krb5-devel-1.15.1-55.el7_9.x86_64                                                                               8/21 驗證中      : libcom_err-devel-1.42.9-19.el7.x86_64                                                                           9/21 驗證中      : krb5-libs-1.15.1-55.el7_9.x86_64                                                                               10/21 驗證中      : krb5-workstation-1.15.1-55.el7_9.x86_64                                                                        11/21 驗證中      : zlib-devel-1.2.7-21.el7_9.x86_64                                                                               12/21 驗證中      : zlib-1.2.7-21.el7_9.x86_64                                                                                     13/21 驗證中      : 1:openssl-1.0.2k-26.el7_9.x86_64                                                                               14/21 驗證中      : 1:openssl-libs-1.0.2k-19.el7.x86_64                                                                            15/21 驗證中      : zlib-devel-1.2.7-18.el7.x86_64                                                                                 16/21 驗證中      : krb5-workstation-1.15.1-50.el7.x86_64                                                                          17/21 驗證中      : 1:openssl-1.0.2k-19.el7.x86_64                                                                                 18/21 驗證中      : zlib-1.2.7-18.el7.x86_64                                                                                       19/21 驗證中      : krb5-libs-1.15.1-50.el7.x86_64                                                                                 20/21 驗證中      : libkadm5-1.15.1-50.el7.x86_64                                                                                  21/21 已安裝:openssl-devel.x86_64 1:1.0.2k-26.el7_9                                                                                             作為依賴被安裝:keyutils-libs-devel.x86_64 0:1.5.8-3.el7      krb5-devel.x86_64 0:1.15.1-55.el7_9      libcom_err-devel.x86_64 0:1.42.9-19.el7     libselinux-devel.x86_64 0:2.5-15.el7          libsepol-devel.x86_64 0:2.5-10.el7       libverto-devel.x86_64 0:0.2.5-4.el7         更新完畢:openssl.x86_64 1:1.0.2k-26.el7_9            zlib.x86_64 0:1.2.7-21.el7_9            zlib-devel.x86_64 0:1.2.7-21.el7_9           作為依賴被升級:krb5-libs.x86_64 0:1.15.1-55.el7_9          krb5-workstation.x86_64 0:1.15.1-55.el7_9       libkadm5.x86_64 0:1.15.1-55.el7_9      openssl-libs.x86_64 1:1.0.2k-26.el7_9      完畢!

4.3 創建用戶并解壓

[root@zard3 ~]# useradd -M -s /sbin/nologin nginx    # 創建用戶
[root@zard3 ~]# tar zxvf nginx-1.20.2.tar.gz -C /opt/   # 解壓

4.4 編譯安裝Nginx

cd nginx-1.20.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

4.5 檢查、啟動、重啟、停止 nginx服務

[root@zard3 nginx-1.20.2]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/ngnx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

4.6 啟動

[root@zard3 nginx-1.20.2]# nginx

4.7 查看當前的版本

[root@zard3 nginx-1.20.2]# nginx -V
nginx version: nginx/1.20.2
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module

4.8添加Nginx服務系統

vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: 35 99 20    // 這是固定格式,2345表示運行級別,之后為開機執行順序和關機執行順序
#description:Nginx Service Control Script    //這也是必須的 
COM="/usr/local/nginx/sbin/nginx" 
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)$COM
;;stop)kill -s QUIT $(cat $PID)
;;restart)$0 stop$0 start
;;reload)kill -s HUP $(cat $PID)
;;*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1esac
exit 0

4.9 運行

chmod +x /etc/init.d/nginx
chkconfig --add nginx							#添加為系統服務
systemctl stop nginx   
systemctl start nginxservice   nginx   start|stop|restart|reload
系統服務 服務名稱 啟動模式

五、awk的使用方法

5.1 統計以/bin/bash結尾的行數

[root@zard3 shelldemo]# awk 'BEGIN{x=0};/\/bin\/bash$/{x++;print x,$0};END{print x}' /etc/
1 root:x:0:0:root:/root:/bin/bash
2 zard3:x:1000:1000:ZARD3:/home/zard3:/bin/bash
3 test1:x:1001:1001::/home/test1:/bin/bash
4 tom:x:1002:1002::/home/tom:/bin/bash
5 zard111:x:1003:1003::/home/zard111:/bin/bash
6 test3:x:1004:1004::/home/test3:/bin/bash
7 test4:x:1005:1005::/home/test4:/bin/bash
7
[root@zard3 shelldemo]# cat /etc/passwd|grep -c "/bin/bash"
7

5.2 統計/etc/passwd中第三列大于等于200的每一行

[root@zard3 shelldemo]# awk -F ":" '! ($3<200){print} ' /etc/passwd
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
saned:x:996:993:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
gluster:x:995:992:GlusterFS daemons:/run/gluster:/sbin/nologin
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin
chrony:x:992:987::/var/lib/chrony:/sbin/nologin
unbound:x:991:986:Unbound DNS resolver:/etc/unbound:/sbin/nologin
sssd:x:990:984:User for sssd:/:/sbin/nologin
geoclue:x:989:983:User for geoclue:/var/lib/geoclue:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:988:982::/run/gnome-initial-setup/:/sbin/nologin
zard3:x:1000:1000:ZARD3:/home/zard3:/bin/bash
test1:x:1001:1001::/home/test1:/bin/bash
tom:x:1002:1002::/home/tom:/bin/bash
zard111:x:1003:1003::/home/zard111:/bin/bash
test3:x:1004:1004::/home/test3:/bin/bash
test4:x:1005:1005::/home/test4:/bin/bash

5.3 第三列大于等于1000的

{FS=":"}也是以冒號作為分隔符

[root@zard3 shelldemo]# awk 'BEGIN {FS=":"} ;{if($3>=1000){print}}' /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
zard3:x:1000:1000:ZARD3:/home/zard3:/bin/bash
test1:x:1001:1001::/home/test1:/bin/bash
tom:x:1002:1002::/home/tom:/bin/bash
zard111:x:1003:1003::/home/zard111:/bin/bash
test3:x:1004:1004::/home/test3:/bin/bash
test4:x:1005:1005::/home/test4:/bin/bash

5.4 打印行號和每一行

[root@zard3 shelldemo]# awk -F ":" '{print NR,$0}' /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15 dbus:x:81:81:System message bus:/:/sbin/nologin
16 polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17 libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
18 colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
19 rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
20 saned:x:996:993:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
21 gluster:x:995:992:GlusterFS daemons:/run/gluster:/sbin/nologin
22 saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
23 abrt:x:173:173::/etc/abrt:/sbin/nologin
24 setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin
25 rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
26 pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
27 radvd:x:75:75:radvd user:/:/sbin/nologin
28 chrony:x:992:987::/var/lib/chrony:/sbin/nologin
29 unbound:x:991:986:Unbound DNS resolver:/etc/unbound:/sbin/nologin
30 qemu:x:107:107:qemu user:/:/sbin/nologin
31 tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
32 sssd:x:990:984:User for sssd:/:/sbin/nologin
33 usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
34 geoclue:x:989:983:User for geoclue:/var/lib/geoclue:/sbin/nologin
35 ntp:x:38:38::/etc/ntp:/sbin/nologin
36 gdm:x:42:42::/var/lib/gdm:/sbin/nologin
37 rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
38 nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
39 gnome-initial-setup:x:988:982::/run/gnome-initial-setup/:/sbin/nologin
40 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
41 avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
42 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
43 tcpdump:x:72:72::/:/sbin/nologin
44 zard3:x:1000:1000:ZARD3:/home/zard3:/bin/bash
45 test1:x:1001:1001::/home/test1:/bin/bash
46 tom:x:1002:1002::/home/tom:/bin/bash
47 mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
48 named:x:25:25:Named:/var/named:/sbin/nologin
49 apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
50 zard111:x:1003:1003::/home/zard111:/bin/bash
51 test3:x:1004:1004::/home/test3:/bin/bash
52 test4:x:1005:1005::/home/test4:/bin/bash

5.5 打印行數和每一行的第一列

[root@zard3 shelldemo]# awk -F ":" '{print NR,$1}' /etc/passwd
1 root
2 bin
3 daemon
4 adm
5 lp
6 sync
7 shutdown
8 halt
9 mail
10 operator
11 games
12 ftp
13 nobody
14 systemd-network
15 dbus
16 polkitd
17 libstoragemgmt
18 colord
19 rpc
20 saned
21 gluster
22 saslauth
23 abrt
24 setroubleshoot
25 rtkit
26 pulse
27 radvd
28 chrony
29 unbound
30 qemu
31 tss
32 sssd
33 usbmuxd
34 geoclue
35 ntp
36 gdm
37 rpcuser
38 nfsnobody
39 gnome-initial-setup
40 sshd
41 avahi
42 postfix
43 tcpdump
44 zard3
45 test1
46 tom
47 mysql
48 named
49 apache
50 zard111
51 test3
52 test4

5.6 先打印行號,再打印每一行

[root@zard3 shelldemo]# sed -n '=;p' /etc/passwd
1
root:x:0:0:root:/root:/bin/bash
2
bin:x:1:1:bin:/bin:/sbin/nologin
3
daemon:x:2:2:daemon:/sbin:/sbin/nologin
4
adm:x:3:4:adm:/var/adm:/sbin/nologin
5
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6
sync:x:5:0:sync:/sbin:/bin/sync
7
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8
halt:x:7:0:halt:/sbin:/sbin/halt
9
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10
operator:x:11:0:operator:/root:/sbin/nologin
11
games:x:12:100:games:/usr/games:/sbin/nologin
12
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13
nobody:x:99:99:Nobody:/:/sbin/nologin
14
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15
dbus:x:81:81:System message bus:/:/sbin/nologin
16
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17
libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
18
colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
19
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
20
saned:x:996:993:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
21
gluster:x:995:992:GlusterFS daemons:/run/gluster:/sbin/nologin
22
saslauth:x:994:76:Saslauthd user:/run/saslauthd:/sbin/nologin
23
abrt:x:173:173::/etc/abrt:/sbin/nologin
24
setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin
25
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
26
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
27
radvd:x:75:75:radvd user:/:/sbin/nologin
28
chrony:x:992:987::/var/lib/chrony:/sbin/nologin
29
unbound:x:991:986:Unbound DNS resolver:/etc/unbound:/sbin/nologin
30
qemu:x:107:107:qemu user:/:/sbin/nologin
31
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
32
sssd:x:990:984:User for sssd:/:/sbin/nologin
33
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
34
geoclue:x:989:983:User for geoclue:/var/lib/geoclue:/sbin/nologin
35
ntp:x:38:38::/etc/ntp:/sbin/nologin
36
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
37
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
38
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
39
gnome-initial-setup:x:988:982::/run/gnome-initial-setup/:/sbin/nologin
40
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
41
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
42
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
43
tcpdump:x:72:72::/:/sbin/nologin
44
zard3:x:1000:1000:ZARD3:/home/zard3:/bin/bash
45
test1:x:1001:1001::/home/test1:/bin/bash
46
tom:x:1002:1002::/home/tom:/bin/bash
47
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false
48
named:x:25:25:Named:/var/named:/sbin/nologin
49
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
50
zard111:x:1003:1003::/home/zard111:/bin/bash
51
test3:x:1004:1004::/home/test3:/bin/bash
52
test4:x:1005:1005::/home/test4:/bin/bash

5.7 空間內存使用率

[root@zard3 shelldemo]# free -m |awk '/Mem:/{print int($3/($3+$4)*100)"%"}'
29%

5.8 統計在線用戶數

[root@zard3 shelldemo]# awk 'BEGIN{n=0; while ("w"|getline)n++;{print n-2}}'
1

5.9 getline 隔一行打印一下

[root@zard3 shelldemo]# seq 10|awk '{getline; print $0}'
2
4
6
8
10

5.10 getline 隔一行打印一下

[root@zard3 shelldemo]# seq 10|awk '{print $0;getline}'
1
3
5
7
9

5.11 獲取當前主機名

[root@zard3 shelldemo]# awk 'BEGIN {"hostname"|getline;{print $0}}'
zard3

總結??

系統性地剖析了Web服務的核心架構與Nginx高性能實踐,從HTTP/HTTPS協議的安全機制、請求響應流程,到Nginx的進程模型、編譯優化與系統集成,最終延伸至Shell和Awk的自動化運維應用。通過理論結合實戰,不僅掌握了構建穩定、高效服務的核心技術,更培養了解決實際問題的能力。未來,無論是應對高并發場景還是優化系統性能,這些知識都將成為您技術體系中不可或缺的基石。

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

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

相關文章

【先楫HPM5E00_EVK系列-板卡測評3】hpm5e00evk平臺中斷、定時器、PWM、USART等基礎功能詳解

此文介紹了利用先楫半導體&#xff08;hpm&#xff09;官方hpm5e00_evk開發板使用的主控芯片的一些原理性知識&#xff0c;無實驗內容展示&#xff0c;主要匯總了先楫半導體hpm5e00主控芯片的中斷、定時器、pwm、usart等功能&#xff0c;主要內容來源于B站“HPM_FAE”的視頻和官…

golang 依賴管理

目錄 演進過程 1. GOPATH 階段&#xff08;Go 1.0 - 1.10&#xff0c;2012 - 2018&#xff09; 2. Vendor 機制階段&#xff08;Go 1.5 實驗性引入&#xff0c;1.6 正式支持&#xff0c;2015 - 2018&#xff09; 3. Go Modules 過渡期&#xff08;Go 1.11 - 1.16&#xff0…

概率論—隨機事件與概率

文章目錄考綱術語事件的關系與運算關系運算古典概型概念和性質放入問題——隨機分配取出問題——簡單隨機抽樣問題幾何概型概率的性質與計算性質計算事件的獨立性和獨立的判定事件的獨立性判定定理舉反例的思想獨立試驗序列概型與n重伯努利概型錯題考綱 術語 (隨機)試驗隨機事…

達夢:存儲過程實現多個用戶之間表的授權

一、背景在某項目現場&#xff0c;開發商想實現4個用戶之間能互相擁有表的查詢、刪除、插入、更新權限和存儲過程的執行權限。此過程只要在新增表之后&#xff0c;其他用戶的權限需要授權&#xff0c;如果是手動寫&#xff0c;一張表的授權就要寫至少3次sql語句&#xff0c;如果…

協議分析基礎

0x01 協議分析基礎 網絡安全領域的“基本功”&#xff1a;一切高級攻擊&#xff08;漏洞利用、DDoS、滲透等&#xff09;都體現為網絡流量的異常。 核心價值&#xff1a; 故障排查 &#xff1a; 定位網絡延遲、丟包、無法連接等問題。性能優化 &#xff1a; 分析應用性能瓶頸。…

AI生成內容的版權迷局:GPT-4輸出的“創意”版權風險與規避之道

大型語言模型&#xff08;LLM&#xff09;如 GPT-4&#xff0c;正以前所未有的速度和創造力&#xff0c;改變著內容生產的方式。無論是文章、代碼、圖片還是音樂&#xff0c;AI都能快速生成令人驚嘆的作品。然而&#xff0c;在這股“AI內容創作浪潮”之下&#xff0c;一個嚴肅的…

編程與數學 03-004 數據庫系統概論 19_數據庫的分布式查詢

編程與數學 03-004 數據庫系統概論 19_數據庫的分布式查詢一、分布式查詢的概念&#xff08;一&#xff09;分布式查詢的定義&#xff08;二&#xff09;分布式查詢的特點二、分布式查詢的優化&#xff08;一&#xff09;查詢分解&#xff08;二&#xff09;查詢分配&#xff0…

java--寫在 try 中的創建連接

1. 背景 在 Java 開發中&#xff0c;很多資源&#xff08;數據庫連接、ZooKeeper 連接、Redis 客戶端、文件流等&#xff09;都需要手動關閉。如果忘記關閉&#xff0c;會導致 資源泄漏&#xff08;連接占滿、內存泄漏、文件句柄耗盡等&#xff09;。 為了避免這種問題&#xf…

蔡文勝在香港買了一棟樓,免費給創業者辦公

蔡文勝在香港買了一棟樓&#xff0c;免費給創業者辦公。前段時間&#xff0c;蔡文勝出售美圖公司、套現約8億港幣后&#xff0c;以6.5億港元購入香港天后道上全幢物業&#xff0c;并將其更名為“CAI大廈”。一樓是咖啡廳&#xff0c;二樓做公眾活動&#xff0c;樓上會有兩層會開…

FOC+MCU:重新定義吸塵器電機控制——高效、靜音、智能的終極解決方案

傳統吸塵器電機的“三重困境”當前吸塵器市場&#xff0c;消費者對吸力、噪音、續航的訴求日益嚴苛&#xff0c;但傳統電機控制方案&#xff08;如方波驅動、有感/無感BLDC控制&#xff09;難以兼顧&#xff1a;效率低下&#xff1a;高速運行時電機發熱嚴重&#xff0c;電池能量…

樹形組件,支持搜索展示,自定義展示,支持vue2,vue3,小程序等等

效果圖平臺兼容性Vue2Vue3ChromeSafariapp-vueapp-nvueAndroidiOS鴻蒙√√√√√√---微信小程序支付寶小程序抖音小程序百度小程序快手小程序京東小程序鴻蒙元服務QQ小程序飛書小程序快應用-華為快應用-聯盟√√√√√√-√√√√多語言暗黑模式寬屏模式√屬性屬性名類型默認值…

元宇宙與教育變革:沉浸式學習重構知識獲取與能力培養

1 元宇宙打破傳統教育的核心局限1.1 突破空間限制&#xff1a;從 “固定教室” 到 “全域學習場景”傳統教育受限于物理空間&#xff0c;優質資源集中在少數學校與城市&#xff0c;而元宇宙通過 “虛擬場景復刻 跨地域實時交互”&#xff0c;將學習空間拓展至全球乃至虛擬維度…

如何在SpringBoot項目中優雅的連接多臺Redis

如何在SpringBoot項目中優雅的連接多臺Redis 在Spring Boot項目中&#xff0c;連接單個Redis實例是常見需求&#xff0c;但有時需要同時連接多個Redis實例&#xff08;例如&#xff0c;主Redis用于業務數據存儲&#xff0c;另一個Redis用于爬蟲數據緩存&#xff09;。本文將基于…

追覓科技舉辦2025「敢夢敢為」發布會,發布超30款全場景重磅新品

上海&#xff0c;2025年9月4日——在以「敢夢敢為」為主題的2025新品發布會上&#xff0c;追覓科技一次性發布超30款新品&#xff0c;全面涵蓋智能清潔、智能家電、家庭健康與個護等核心領域。在清潔家電與大家電“高端智能生態矩陣”已然成型的當下&#xff0c;追覓科技正在邁…

去服務器化的流媒體分發:輕量級RTSP服務的技術邏輯與優勢

一、設計背景&#xff1a;RTSP/RTP協議的技術根基 在流媒體傳輸體系中&#xff0c;RTSP&#xff08;Real-Time Streaming Protocol&#xff09; RTP/RTCP 組合被廣泛認為是最經典、最標準化的解決方案。 RTSP 作為應用層協議&#xff0c;本質上是一個 遠程會話控制協議。它通過…

mysql分頁SQL

在 MySQL 中&#xff0c;實現分頁查詢通常使用 LIMIT 子句。LIMIT 可以指定返回結果的起始位置和數量&#xff0c;非常適合實現分頁功能。 基本語法如下&#xff1a; SELECT 列名 FROM 表名 WHERE 條件 ORDER BY 排序字段 [ASC|DESC] LIMIT 起始位置, 每頁顯示數量;說明&#x…

刷新記錄:TapData Oracle 日志同步性能達 80K TPS,重塑實時同步新標準

在當前數據驅動的企業環境中&#xff0c;高效、穩定的數據同步能力已成為支撐關鍵業務系統的核心需求。尤其在高頻變更、大量增量數據的業務場景中&#xff0c;傳統的 Oracle 日志解析方案往往在吞吐能力和延遲控制方面力不從心。 隨著企業全面邁入“實時化”時代&#xff0c;金…

Java全棧開發面試實戰:從基礎到高并發的深度解析

Java全棧開發面試實戰&#xff1a;從基礎到高并發的深度解析 在一次真實的面試中&#xff0c;一位擁有5年全棧開發經驗的程序員&#xff0c;面對來自某互聯網大廠的技術面試官&#xff0c;展現出了扎實的基礎與豐富的項目經驗。以下是這次面試的完整記錄。 面試官開場 面試官&a…

【mac】如何在 macOS 終端中高效查找文件:五種實用方法

【mac】如何在 macOS 終端中高效查找文件&#xff1a;五種實用方法 在 macOS 上&#xff0c;終端是一個強大的工具&#xff0c;不僅可以執行命令&#xff0c;還能幫助你快速找到需要的文件。無論是按文件名、類型、大小&#xff0c;還是文件內容搜索&#xff0c;都有多種命令可…

React筆記_組件之間進行數據傳遞

目錄父子組件傳值- props父傳子子傳父嵌套組件傳值-Context API概念React.createContext APIProvider組件正確示例錯誤示例消費 ContextReact.Consumer組件useContext Hook區別使用場景舉例說明-用戶信息狀態管理-Redux父子組件傳值- props 在React中父子組件傳值是單向數據流…