AWK 的主流版本

AWK 的主流版本是 GNU AWK(gawk),它是 AWK 语言的最主要实现,也是目前更新最活跃的版本。以下是其最新版本及主要升级内容: AWK 的主流版本是 GNU AWK(gawk),它是 AWK 语言的最主要实现,也是目前更新最活跃的版本。以下是其最新版本及主要升级内容: 一、最新稳定版本 截至 2024 年,GNU AWK 的最新稳定版本是 gawk 5.3.0(2023 年 10 月发布)。 * 官方网站:https://www.gnu.org/software/gawk/ * 版本迭代规律:通常每年更新 1-2 个小版本,主要以 bug 修复和功能增强为

Read More

awk分析Nginx日志

awk分析Nginx日志 以下是一个基于 Nginx 访问日志的 AWK 逻辑组合实战示例,模拟实际工作中“多条件筛选异常请求并统计”的场景,包含基础逻辑组合、高级统计及输出格式化。 场景背景 假设我们有一份 Nginx 访问日志 access.log,格式如下(简化版,字段含义对应): 1 2 $1: 客户端IP $4: 访问时间 $6: 请求方法 $7: 请求路径 $9: 状态码 $10: 响应大小(字节) 示例日志内容: 1 2 3 4 5 6 192.168.1.1 - - [10/Oct/2023:10:00:00 +0800] "GET

Read More

awk的逻辑组合

AWK的逻辑组合(多条件判断、分支处理等)凭借其轻量、高效的文本处理能力,在除日志分析外的多个领域都有广泛应用。以下是几个典型典型领域及具体场景,结合逻辑组合的用法说明: 一、数据清洗与格式转换 核心需求:从非结构化/半结构化数据中提取有效信息,按规则过滤、转换格式。逻辑组合应用:用多条件判断筛选符合要求的记录,或按不同格式规则分支处理。 示例:处理 CSV 格式的用户数据 假设有 users.csv(格式:姓名,年龄,性别,注册日期),需: 保留“年龄>18 且 注册日期在2023年后”的有效用户; 对“男性”用户添加标签 [M],对“女性”用户添加标签 [F]。 1 2 3 4

Read More

AWK逻辑组合专题:从基础到实战

awk逻辑组合专题:从基础到实战 一、专题提纲 AWK 逻辑组合专题:从基础到实战 一、专题提纲 1. 什么是 AWK 逻辑组合?2. 基础逻辑运算符与优先级3. 模式(Pattern)的逻辑组合方式4. 高级逻辑组合技巧5. 典型工作场景实战 二、核心知识点(基础篇) 1. 逻辑组合的本质 AWK 的逻辑组合是通过运算符将多个条件(模式)关联,实现“多条件筛选”或“分支处理”。核心目标:精准定位需要处理的行,并按规则执行对应动作。 2. 基础逻辑运算符 运算符含义示例(条件)说明&&逻辑与$2 > 100 && $3 == “ok”两个条件同时满足才成立``逻辑或!逻辑非!($1

Read More

ls与du统计占用空间大小的区别

ls与du统计占用空间大小的区别 ls 命令显示的文件大小是通过读取文件系统的元数据(metadata)获取的,具体来说是读取文件的 inode 信息 中的大小字段。以下是详细解释: 一、获取文件大小的底层原理 文件系统存储元数据每个文件在 Linux 系统中都对应一个 inode(索引节点),其中记录了文件的关键属性: * 文件大小(字节数) * 创建/修改/访问时间 * 权限、所有者 * 数据块在磁盘上的存储位置等 ls 命令通过系统调用(如 stat() 或 lstat())读取这些元数据,从而获取文件大小。

Read More

sendmmsg系统调用及示例

sendmmsg 函数详解 1. 函数介绍 sendmmsg 是Linux 2.6.39引入的高效批量发送消息系统调用。它是 sendmsg 的批量版本,允许应用程序在单次系统调用中发送多个消息,显著减少了系统调用开销,特别适用于高吞吐量的网络服务器和实时应用。 2. 函数原型 1 2 3 4 5 #define _GNU_SOURCE #include int sendmmsg(int sockfd, struct mmsghdr *msgvec, unsigned int vlen, int flags); 3.

Read More

setfsgid系统调用及示例

我们来深入学习 setfsgid 和 setfsuid 这两个系统调用 1. 函数介绍 在 Linux 系统中,每个进程都有一套与之相关的用户 ID (UID) 和组 ID (GID),比如: * 真实用户 ID (Real UID): 登录系统的用户 ID。 * 有效用户 ID (Effective UID): 决定进程当前拥有哪些权限,用于权限检查。 * 保存的设置用户 ID (Saved Set-UID): 用于在有效 UID 和真实 UID 之间切换。 通常,文件访问权限检查是基于进程的 有效 UID 和 有效 GID 进行的

Read More

setfsuid系统调用及示例

我们来深入学习 setfsgid 和 setfsuid 这两个系统调用。(https://www.calcguide.tech/2025/08/19/setfsuid系统调用及示例/) 1. 函数介绍 在 Linux 系统中,每个进程都有一套与之相关的用户 ID (UID) 和组 ID (GID),比如: * 真实用户 ID (Real UID): 登录系统的用户 ID。 * 有效用户 ID (Effective UID): 决定进程当前拥有哪些权限,用于权限检查。 * 保存的设置用户 ID (Saved Set-UID): 用于在有效 UID 和真实

Read More

sethostname系统调用及示例

我们来深入学习 sethostname 系统调用及示例 我们来深入学习 sethostname 系统调用及示例 1. 函数介绍 在 Linux 系统(以及大多数 Unix-like 系统)中,每台计算机都有一个唯一的标识符,叫做 主机名 (hostname)。这个主机名用于在网络中识别这台机器。例如,当你在命令行输入 hostname 时,它会显示当前机器的主机名。 sethostname 系统调用的作用就是设置这台运行着 Linux 内核的计算机的 主机名。这是一个系统级别的设置,会影响整个机器,而不仅仅是调用它的那个进程。 简单来说,sethostname 就是让你用程序来给你的

Read More

sigaltstack系统调用及示例

sigaltstack 函数详解 1. 函数介绍 sigaltstack 是Linux系统调用,用于设置和获取信号处理程序的备用栈(alternate signal stack)。当进程收到信号时,内核通常在当前栈上执行信号处理程序。使用 sigaltstack 可以为信号处理程序指定一个独立的栈空间,这对于处理栈溢出等异常情况特别有用。 2. 函数原型 1 2 3 #include int sigaltstack(const stack_t *ss, stack_t *oss); 3. 功能 sigaltstack 允许进程为信号处理程序设置一个

Read More