coreos/go-systemd

GitHub: coreos/go-systemd

systemd 的 Go 语言绑定库,涵盖 D-Bus 服务管理、socket 激活、journald 日志读写、单元文件处理及 logind/machined 集成等功能。

Stars: 2692 | Forks: 333

# go-systemd [![godoc](https://img.shields.io/badge/godoc-reference-5272B4)](https://pkg.go.dev/mod/github.com/coreos/go-systemd/v22/?tab=packages) ![最低要求 golang 1.24](https://img.shields.io/badge/golang-1.24%2B-orange.svg) systemd 的 Go 绑定。该项目包含以下几个包: - `activation` - 用于在 Go 中编写和使用 socket 激活 - `daemon` - 用于向 systemd 通知服务状态变更 - `dbus` - 用于启动/停止/检查正在运行的服务和单元 - `journal` - 用于写入 systemd 的日志服务 journald - `sdjournal` - 通过封装 journald 的 C API 来从中读取日志 - `login1` - 用于与 systemd logind API 集成 - `machine1` - 用于向 systemd 注册机器/容器 - `unit` - 用于单元文件的序列化/反序列化和比较 ## Socket 激活 在运行 systemd 的 Linux 机器上,按照本 README 的步骤,可以快速设置一个使用 socket 激活的 HTTP 服务器示例: https://github.com/coreos/go-systemd/tree/main/examples/activation/httpserver ## systemd 服务通知 `daemon` 包是 [sd_notify 协议](https://www.freedesktop.org/software/systemd/man/sd_notify.html#Description)的一个实现。 它可用于向 systemd 通知服务启动完成、watchdog 事件以及其他状态变更。 ## D-Bus `dbus` 包连接到 [systemd D-Bus API](http://www.freedesktop.org/wiki/Software/systemd/dbus/),让你能够启动、停止和内省 systemd 单元。 [API 文档][dbus-doc] 可在线查看。 ### 调试 创建一个如下所示的 `/etc/dbus-1/system-local.conf` 文件: ``` ``` ## Journal ### 写入 Journal 使用纯 Go 实现的 `journal` 包,你可以将日志条目直接提交到 systemd 的 journal 中,并利用诸如为每个日志条目建立索引的键/值对等功能。 ### 从 Journal 读取 `sdjournal` 包通过封装 journald 原生的 C API 来提供对 journal 的读取访问;因此,它需要 cgo 并且要求系统上有可用的 journal 头文件。 ## logind `login1` 包提供了与 [systemd logind API](http://www.freedesktop.org/wiki/Software/systemd/logind/) 集成的相关函数。 ## machined `machine1` 包允许与 [systemd machined D-Bus API](http://www.freedesktop.org/wiki/Software/systemd/machined/) 进行交互。 ## 单元 `unit` 包提供了各种用于处理 [systemd 单元文件](http://www.freedesktop.org/software/systemd/man/systemd.unit.html)的函数。
标签:D-Bus, EVTX分析, Go, Ruby工具, systemd, 抓包工具, 日志, 日志审计, 服务管理, 系统编程