From 460a8e87589a7711a52006189540c23acbb52e68 Mon Sep 17 00:00:00 2001 From: yunwei37 <1067852565@qq.com> Date: Wed, 25 Jan 2023 20:01:17 +0800 Subject: [PATCH] =?UTF-8?q?Rename=20=E6=8C=87=E5=8D=97=20to=20=E6=95=99?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0-introduce/README.md | 4 ++-- 1-helloworld/README.md | 4 ++-- 10-hardirqs/README.md | 4 ++-- 11-bootstrap/README.md | 2 +- 2-kprobe-unlink/README.md | 6 +++--- 3-fentry-unlink/README.md | 4 ++-- 4-opensnoop/README.md | 4 ++-- 5-uprobe-bashreadline/README.md | 4 ++-- 6-sigsnoop/README.md | 4 ++-- 7-execsnoop/README.md | 2 +- 8-exitsnoop/README.md | 4 ++-- 9-runqlat/README.md | 2 +- README.md | 4 ++-- 13 files changed, 24 insertions(+), 24 deletions(-) diff --git a/0-introduce/README.md b/0-introduce/README.md index 068043b..f3d171a 100644 --- a/0-introduce/README.md +++ b/0-introduce/README.md @@ -1,8 +1,8 @@ -# eBPF 入门开发实践指南一:介绍 eBPF 的基本概念、常见的开发工具 +# eBPF 入门开发实践教程一:介绍 eBPF 的基本概念、常见的开发工具 -- [eBPF 入门开发实践指南一:介绍 eBPF 的基本概念、常见的开发工具](#ebpf-入门开发实践指南一介绍-ebpf-的基本概念常见的开发工具) +- [eBPF 入门开发实践教程一:介绍 eBPF 的基本概念、常见的开发工具](#ebpf-入门开发实践教程一介绍-ebpf-的基本概念常见的开发工具) - [1. 为什么会有 eBPF 技术?](#1-为什么会有-ebpf-技术) - [1.1. 起源](#11-起源) - [1.2. 执行逻辑](#12-执行逻辑) diff --git a/1-helloworld/README.md b/1-helloworld/README.md index 1a353c9..f86e821 100644 --- a/1-helloworld/README.md +++ b/1-helloworld/README.md @@ -1,8 +1,8 @@ -# eBPF 入门开发实践指南二:Hello World,基本框架和开发流程 +# eBPF 入门开发实践教程二:Hello World,基本框架和开发流程 eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具。它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 -本文是 eBPF 入门开发实践指南的第二篇,主要介绍 eBPF 的基本框架和开发流程。 +本文是 eBPF 入门开发实践教程的第二篇,主要介绍 eBPF 的基本框架和开发流程。 开发 eBPF 程序可以使用多种工具,如 BCC、eunomia-bpf 等。不同的工具有不同的特点,但基本流程大致相同。 diff --git a/10-hardirqs/README.md b/10-hardirqs/README.md index 2267ef7..bac7856 100644 --- a/10-hardirqs/README.md +++ b/10-hardirqs/README.md @@ -1,8 +1,8 @@ -# eBPF 入门开发实践指南十:在 eBPF 中使用 hardirqs 或 softirqs 捕获中断事件 +# eBPF 入门开发实践教程十:在 eBPF 中使用 hardirqs 或 softirqs 捕获中断事件 eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具。它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 -本文是 eBPF 入门开发实践指南的第十篇,在 eBPF 中。 +本文是 eBPF 入门开发实践教程的第十篇,在 eBPF 中。 ## hardirqs是什么? diff --git a/11-bootstrap/README.md b/11-bootstrap/README.md index 4d3a4c8..69b68cc 100644 --- a/11-bootstrap/README.md +++ b/11-bootstrap/README.md @@ -1,6 +1,6 @@ ## eBPF 入门实践教程:libbpf-bootstrap with user space -# eBPF 入门开发实践指南十一篇:在 eBPF 中使用 bootstrap 跟踪exec()和exit()系统调用 +# eBPF 入门开发实践教程十一篇:在 eBPF 中使用 bootstrap 跟踪exec()和exit()系统调用 eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具。它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 ## 什么是bootstrap? diff --git a/2-kprobe-unlink/README.md b/2-kprobe-unlink/README.md index c2509fa..30f0bac 100644 --- a/2-kprobe-unlink/README.md +++ b/2-kprobe-unlink/README.md @@ -1,8 +1,8 @@ -# eBPF 入门开发实践指南二:在 eBPF 中使用 kprobe 监测捕获 unlink 系统调用 +# eBPF 入门开发实践教程二:在 eBPF 中使用 kprobe 监测捕获 unlink 系统调用 eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具。它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 -本文是 eBPF 入门开发实践指南的第二篇,在 eBPF 中使用 kprobe 捕获 unlink 系统调用。 +本文是 eBPF 入门开发实践教程的第二篇,在 eBPF 中使用 kprobe 捕获 unlink 系统调用。 ## kprobes技术背景 @@ -101,6 +101,6 @@ $ sudo cat /sys/kernel/debug/tracing/trace_pipe 通过本文的示例,我们学习了如何使用 eBPF 的 kprobe 和 kretprobe 捕获 unlink 系统调用。更多的例子和详细的开发指南,请参考 eunomia-bpf 的官方文档: -本文是 eBPF 入门开发实践指南的第二篇。下一篇文章将介绍如何在 eBPF 中使用 fentry 监测捕获 unlink 系统调用。 +本文是 eBPF 入门开发实践教程的第二篇。下一篇文章将介绍如何在 eBPF 中使用 fentry 监测捕获 unlink 系统调用。 完整的教程和源代码已经全部开源,可以在 中查看。 diff --git a/3-fentry-unlink/README.md b/3-fentry-unlink/README.md index 68841a5..439ff00 100644 --- a/3-fentry-unlink/README.md +++ b/3-fentry-unlink/README.md @@ -1,8 +1,8 @@ -# eBPF 入门开发实践指南三:在 eBPF 中使用 fentry 监测捕获 unlink 系统调用 +# eBPF 入门开发实践教程三:在 eBPF 中使用 fentry 监测捕获 unlink 系统调用 eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具。它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 -本文是 eBPF 入门开发实践指南的第三篇,在 eBPF 中使用 fentry 捕获 unlink 系统调用。 +本文是 eBPF 入门开发实践教程的第三篇,在 eBPF 中使用 fentry 捕获 unlink 系统调用。 ## Fentry diff --git a/4-opensnoop/README.md b/4-opensnoop/README.md index 66179d2..e08a952 100644 --- a/4-opensnoop/README.md +++ b/4-opensnoop/README.md @@ -1,8 +1,8 @@ -# eBPF 入门开发实践指南四:在 eBPF 中捕获进程打开文件的系统调用集合,使用全局变量过滤进程 pid +# eBPF 入门开发实践教程四:在 eBPF 中捕获进程打开文件的系统调用集合,使用全局变量过滤进程 pid eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具,它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 -本文是 eBPF 入门开发实践指南的第四篇,主要介绍如何捕获进程打开文件的系统调用集合,并使用全局变量在 eBPF 中过滤进程 pid。 +本文是 eBPF 入门开发实践教程的第四篇,主要介绍如何捕获进程打开文件的系统调用集合,并使用全局变量在 eBPF 中过滤进程 pid。 ## 在 eBPF 中捕获进程打开文件的系统调用集合 diff --git a/5-uprobe-bashreadline/README.md b/5-uprobe-bashreadline/README.md index 013ca3b..571f4aa 100644 --- a/5-uprobe-bashreadline/README.md +++ b/5-uprobe-bashreadline/README.md @@ -1,8 +1,8 @@ -# eBPF 入门开发实践指南五:在 eBPF 中使用 uprobe 捕获 bash 的 readline 函数调用 +# eBPF 入门开发实践教程五:在 eBPF 中使用 uprobe 捕获 bash 的 readline 函数调用 eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具,它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 -本文是 eBPF 入门开发实践指南的第五篇,主要介绍如何使用 uprobe 捕获 bash 的 readline 函数调用。 +本文是 eBPF 入门开发实践教程的第五篇,主要介绍如何使用 uprobe 捕获 bash 的 readline 函数调用。 ## 什么是uprobe diff --git a/6-sigsnoop/README.md b/6-sigsnoop/README.md index 06c0e7b..9a21964 100755 --- a/6-sigsnoop/README.md +++ b/6-sigsnoop/README.md @@ -1,8 +1,8 @@ -# eBPF 入门开发实践指南六:捕获进程发送信号的系统调用集合,使用 hash map 保存状态 +# eBPF 入门开发实践教程六:捕获进程发送信号的系统调用集合,使用 hash map 保存状态 eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具,它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 -本文是 eBPF 入门开发实践指南的第六篇,主要介绍如何实现一个 eBPF 工具,捕获进程发送信号的系统调用集合,使用 hash map 保存状态。 +本文是 eBPF 入门开发实践教程的第六篇,主要介绍如何实现一个 eBPF 工具,捕获进程发送信号的系统调用集合,使用 hash map 保存状态。 ## sigsnoop diff --git a/7-execsnoop/README.md b/7-execsnoop/README.md index da1c826..d5a8e6f 100644 --- a/7-execsnoop/README.md +++ b/7-execsnoop/README.md @@ -2,7 +2,7 @@ eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具,它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 -本文是 eBPF 入门开发实践指南的第七篇,主要介绍如何捕获 Linux 内核中进程执行的事件,并且通过 perf event array 向用户态命令行打印输出,不需要再通过查看 /sys/kernel/debug/tracing/trace_pipe 文件来查看 eBPF 程序的输出。通过 perf event array 向用户态发送信息之后,可以进行复杂的数据处理和分析。 +本文是 eBPF 入门开发实践教程的第七篇,主要介绍如何捕获 Linux 内核中进程执行的事件,并且通过 perf event array 向用户态命令行打印输出,不需要再通过查看 /sys/kernel/debug/tracing/trace_pipe 文件来查看 eBPF 程序的输出。通过 perf event array 向用户态发送信息之后,可以进行复杂的数据处理和分析。 ## execsnoop diff --git a/8-exitsnoop/README.md b/8-exitsnoop/README.md index 38ba4c7..45941af 100644 --- a/8-exitsnoop/README.md +++ b/8-exitsnoop/README.md @@ -1,10 +1,10 @@ -# eBPF 入门开发实践指南八:在 eBPF 中使用 exitsnoop 监控 进程退出事件 +# eBPF 入门开发实践教程八:在 eBPF 中使用 exitsnoop 监控 进程退出事件 ## exitsnoop eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具。它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 -本文是 eBPF 入门开发实践指南的第八篇,在 eBPF 中使用 exitsnoop 监控进程退出事件。 +本文是 eBPF 入门开发实践教程的第八篇,在 eBPF 中使用 exitsnoop 监控进程退出事件。 ```c #include "vmlinux.h" diff --git a/9-runqlat/README.md b/9-runqlat/README.md index 8d40105..e2157d3 100755 --- a/9-runqlat/README.md +++ b/9-runqlat/README.md @@ -1,4 +1,4 @@ -# eBPF 入门开发实践指南九:一个 Linux 内核 BPF 程序,通过柱状图来总结调度程序运行队列延迟,显示任务等待运行在 CPU 上的时间长度 +# eBPF 入门开发实践教程九:一个 Linux 内核 BPF 程序,通过柱状图来总结调度程序运行队列延迟,显示任务等待运行在 CPU 上的时间长度 eBPF (Extended Berkeley Packet Filter) 是 Linux 内核上的一个强大的网络和性能分析工具。它允许开发者在内核运行时动态加载、更新和运行用户定义的代码。 diff --git a/README.md b/README.md index 0bf4904..3224de2 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ # bpf-develop-tutorial: learn CO-RE ebpf with example tools -这是一个基于 `CO-RE`(一次编译,到处运行)的 `libbpf` 的 eBPF 的开发教程,提供了从入门到进阶的 eBPF 开发实践指南,包括基本概念、代码实例、实际应用等内容。我们主要提供了一些 eBPF 工具的案例,帮助开发者学习 eBPF 的开发方法和技巧。教程内容可以在目录中找到,每个目录都是一个独立的 eBPF 工具案例。 +这是一个基于 `CO-RE`(一次编译,到处运行)的 `libbpf` 的 eBPF 的开发教程,提供了从入门到进阶的 eBPF 开发实践教程,包括基本概念、代码实例、实际应用等内容。我们主要提供了一些 eBPF 工具的案例,帮助开发者学习 eBPF 的开发方法和技巧。教程内容可以在目录中找到,每个目录都是一个独立的 eBPF 工具案例。 在学习 eBPF 的过程中,我们受到了 [tutorial_bcc_python_developer](https://github.com/iovisor/bcc/blob/master/docs/tutorial_bcc_python_developer.md) 的许多启发和帮助,但从 2022 年的角度出发,使用 libbpf 开发 eBPF 的应用是目前相对更好的选择。但目前似乎很少有基于 libbpf 和 BPF CO-RE 出发的、通过案例和工具介绍 eBPF 开发的教程,因此我们发起了这个项目,采用类似 tutorial_bcc_python_developer 的组织方式,但使用 CO-RE 的 libbpf 进行开发。 本项目主要基于 [libbpf-boostrap](https://github.com/libbpf/libbpf-bootstrap) 和 [eunomia-bpf](https://github.com/eunomia-bpf/eunomia-bpf) 两个框架完成,并使用 eunomia-bpf 帮助简化一部分 libbpf eBPF 用户态代码的编写,让开发者专注于内核态的 eBPF 代码的开发。 -教程主要关注于可观察性,并简要介绍了 eBPF 的其他应用,例如网络、安全等等。 +教程主要关注于可观测性,并简要介绍了 eBPF 的其他应用,例如网络、安全等等。 Gitee 镜像: