checkpoint-restore/go-criu

GitHub: checkpoint-restore/go-criu

go-criu 为 CRIU 进程检查点/恢复工具提供 Go 语言绑定和镜像文件操作能力,简化在 Go 项目中集成进程快照与迁移的开发流程。

Stars: 245 | Forks: 60

# go-criu -- CRIU 的 Go 绑定 [![ci](https://static.pigsec.cn/wp-content/uploads/repos/cas/99/993938d8ce5e902ccfb9d6747725c320d855dea3235ed9a304cedf0d94c9321f.svg)](https://github.com/checkpoint-restore/go-criu/actions/workflows/main.yml) [![verify](https://static.pigsec.cn/wp-content/uploads/repos/cas/f5/f5acfe8dce6a25e85907ab3b9795e0d0a81b502cf4ae76bb4079cea10546c57e.svg)](https://github.com/checkpoint-restore/go-criu/actions/workflows/verify.yml) [![Go 参考](https://pkg.go.dev/badge/github.com/checkpoint-restore/go-criu.svg)](https://pkg.go.dev/github.com/checkpoint-restore/go-criu) 本仓库提供了 [CRIU](https://criu.org/) 的 Go 绑定。 该代码基于 CRIU 仓库中基于 Go 的 PHaul 实现。 为了更方便地集成到其他 Go 项目中,CRIU 的 Go 绑定已被 迁移到此仓库中。 ## CRIU Go 绑定提供了一种简便的方式,可以直接在 Go 中使用 CRIU RPC 调用, 而无需设置所有底层基础设施来建立与 CRIU 的实际 RPC 连接。 以下示例将打印 CRIU 的版本: ``` import ( "log" "github.com/checkpoint-restore/go-criu/v8" ) func main() { c := criu.MakeCriu() version, err := c.GetCriuVersion() if err != nil { log.Fatalln(err) } log.Println(version) } ``` 或者仅仅检查是否至少安装了某个特定的 CRIU 版本: ``` c := criu.MakeCriu() result, err := c.IsCriuAtLeast(31100) ``` ## CRIT `crit` 包提供了在 Go 中原生解码、编码和操作 CRIU 镜像文件的绑定。它还提供了一个类似于 原始 CRIT Python 工具的 CLI 工具。要开始使用它,请参阅 [CRIT (Go 库)](https://criu.org/CRIT_%28Go_library%29) 的文档。 ## 发布版本 第一个 go-criu 发布版本是基于 CRIU 3.11 的 3.11。最初的计划 是跟随 CRIU 的版本号,使得 go-criu 能够使用与 CRIU 相同的版本号。 由于 go-criu 被其他项目导入,且 Go 模块需要 遵循语义化版本控制,因此从 4.0.0 版本开始,go-criu 也将遵循语义化版本控制。 下表展示了 go-criu 和 criu 版本之间的对应关系: | 主版本号 | 最新发布版本 | CRIU 版本 | | -------------- | -------------- | ------------ | | v8 | 8.3.0 | 4.2 | | v7 | 7.2.0 | 3.19 | | v7 | 7.0.0 | 3.18 | | v6 | 6.3.0 | 3.17 | | v5 | 5.3.0 | 3.16 | | v5 | 5.0.0 | 3.15 | | v4 | 4.1.0 | 3.14 | ## 许可证与版权 除非在特定文件的头部另有说明,本项目中的所有代码 均在 Apache 2.0 许可证下发布。 变更的作者保留其代码的版权 (不进行版权转让)。作者和贡献者列表可以从 git 提交记录中获取, 在某些情况下,也可以从文件头部获取。
标签:EVTX分析, Prisma Cloud, 文档结构分析, 日志审计