​​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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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中父子组件传值是单向数据流…