docs: Update 3 (#49)

* docs: style

* docs: style
This commit is contained in:
Reid
2023-07-24 02:50:29 +08:00
committed by GitHub
parent 3a1acd3379
commit ed1d684568

View File

@@ -38,14 +38,14 @@ int BPF_PROG(do_unlinkat_exit, int dfd, struct filename *name, long ret)
} }
``` ```
这段程序是用C语言编写的eBPF扩展的伯克利包过滤器程序它使用BPFfentryfexit探针来跟踪Linux内核函数do_unlinkat。在这个教程中我们将以这段程序作为示例让您学会如何在eBPF中使用fentry监测捕获unlink系统调用。 这段程序是用 C 语言编写的 eBPF扩展的伯克利包过滤器程序它使用 BPFfentryfexit 探针来跟踪 Linux 内核函数 `do_unlinkat`。在这个教程中,我们将以这段程序作为示例,让您学会如何在 eBPF 中使用 fentry 监测捕获 unlink 系统调用。
程序包含以下部分: 程序包含以下部分:
1. 包含头文件:包括 vmlinux.h用于访问内核数据结构、bpf/bpf_helpers.h包含eBPF帮助函数、bpf/bpf_tracing.h用于eBPF跟踪相关功能 1. 包含头文件:包括 vmlinux.h用于访问内核数据结构、bpf/bpf_helpers.h包含eBPF帮助函数、bpf/bpf_tracing.h用于eBPF跟踪相关功能
2. 定义许可证这里定义了一个名为LICENSE的字符数组包含许可证信息"Dual BSD/GPL" 2. 定义许可证:这里定义了一个名为 `LICENSE` 的字符数组,包含许可证信息Dual BSD/GPL
3. 定义fentry探针我们定义了一个名为BPF_PROG(do_unlinkat)fentry探针该探针在do_unlinkat函数的入口处被触发。这个探针获取当前进程的PID进程ID并将其与文件名一起打印到内核日志。 3. 定义 fentry 探针:我们定义了一个名为 `BPF_PROG(do_unlinkat)`fentry 探针,该探针在 `do_unlinkat` 函数的入口处被触发。这个探针获取当前进程的 PID进程ID并将其与文件名一起打印到内核日志。
4. 定义fexit探针我们还定义了一个名为BPF_PROG(do_unlinkat_exit)fexit探针该探针在do_unlinkat函数的退出处被触发。与fentry探针类似这个探针也会获取当前进程的PID并将其与文件名和返回值一起打印到内核日志。 4. 定义 fexit 探针:我们还定义了一个名为 `BPF_PROG(do_unlinkat_exit)`fexit 探针,该探针在 `do_unlinkat` 函数的退出处被触发。与 fentry 探针类似,这个探针也会获取当前进程的 PID 并将其与文件名和返回值一起打印到内核日志。
通过这个示例,您可以学习如何在 eBPF 中使用 fentry 和 fexit 探针来监控和捕获内核函数调用,例如在本教程中的 unlink 系统调用。 通过这个示例,您可以学习如何在 eBPF 中使用 fentry 和 fexit 探针来监控和捕获内核函数调用,例如在本教程中的 unlink 系统调用。
@@ -70,7 +70,7 @@ touch test_file2
rm test_file2 rm test_file2
``` ```
运行这段程序后,可以通过查看 /sys/kernel/debug/tracing/trace_pipe 文件来查看 eBPF 程序的输出: 运行这段程序后,可以通过查看 `/sys/kernel/debug/tracing/trace_pipe` 文件来查看 eBPF 程序的输出:
```console ```console
$ sudo cat /sys/kernel/debug/tracing/trace_pipe $ sudo cat /sys/kernel/debug/tracing/trace_pipe
@@ -82,8 +82,8 @@ $ sudo cat /sys/kernel/debug/tracing/trace_pipe
## 总结 ## 总结
这段程序是一个 eBPF 程序,通过使用 fentry 和 fexit 捕获 do_unlinkat 和 do_unlinkat_exit 函数,并通过使用 bpf_get_current_pid_tgid 和 bpf_printk 函数获取调用 do_unlinkat 的进程 ID、文件名和返回值并在内核日志中打印出来。 这段程序是一个 eBPF 程序,通过使用 fentry 和 fexit 捕获 `do_unlinkat``do_unlinkat_exit` 函数,并通过使用 `bpf_get_current_pid_tgid``bpf_printk` 函数获取调用 do_unlinkat 的进程 ID、文件名和返回值并在内核日志中打印出来。
编译这个程序可以使用 ecc 工具,运行时可以使用 ecli 命令,并通过查看 /sys/kernel/debug/tracing/trace_pipe 文件查看 eBPF 程序的输出。更多的例子和详细的开发指南,请参考 eunomia-bpf 的官方文档:<https://github.com/eunomia-bpf/eunomia-bpf> 编译这个程序可以使用 ecc 工具,运行时可以使用 ecli 命令,并通过查看 `/sys/kernel/debug/tracing/trace_pipe` 文件查看 eBPF 程序的输出。更多的例子和详细的开发指南,请参考 eunomia-bpf 的官方文档:<https://github.com/eunomia-bpf/eunomia-bpf>
如果您希望学习更多关于 eBPF 的知识和实践,可以访问我们的教程代码仓库 <https://github.com/eunomia-bpf/bpf-developer-tutorial> 以获取更多示例和完整的教程。 如果您希望学习更多关于 eBPF 的知识和实践,可以访问我们的教程代码仓库 <https://github.com/eunomia-bpf/bpf-developer-tutorial> 以获取更多示例和完整的教程。