README
¶
go-systemd
Go bindings to systemd. The project has several packages:
activation
- for writing and using socket activation from Godaemon
- for notifying systemd of service status changesdbus
- for starting/stopping/inspecting running services and unitsjournal
- for writing to systemd's logging service, journaldsdjournal
- for reading from journald by wrapping its C APIlogin1
- for integration with the systemd logind APImachine1
- for registering machines/containers with systemdunit
- for (de)serialization and comparison of unit files
Socket Activation
An example HTTP server using socket activation can be quickly set up by following this README on a Linux machine running systemd:
https://gitee.com/wanttobeamaster/go-systemd/tree/master/examples/activation/httpserver
systemd Service Notification
The daemon
package is an implementation of the sd_notify protocol. It can be used to inform systemd of service start-up completion, watchdog events, and other status changes.
D-Bus
The dbus
package connects to the systemd D-Bus API and lets you start, stop and introspect systemd units. The API docs are here:
http://godoc.org/gitee.com/wanttobeamaster/go-systemd/dbus
Debugging
Create /etc/dbus-1/system-local.conf
that looks like this:
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<policy user="root">
<allow eavesdrop="true"/>
<allow eavesdrop="true" send_destination="*"/>
</policy>
</busconfig>
Journal
Writing to the Journal
Using the pure-Go journal
package you can submit journal entries directly to systemd's journal, taking advantage of features like indexed key/value pairs for each log entry.
Reading from the Journal
The sdjournal
package provides read access to the journal by wrapping around journald's native C API; consequently it requires cgo and the journal headers to be available.
logind
The login1
package provides functions to integrate with the systemd logind API.
machined
The machine1
package allows interaction with the systemd machined D-Bus API.
Units
The unit
package provides various functions for working with systemd unit files.
Directories
¶
Path | Synopsis |
---|---|
Package activation implements primitives for systemd socket activation.
|
Package activation implements primitives for systemd socket activation. |
Package daemon provides a Go implementation of the sd_notify protocol.
|
Package daemon provides a Go implementation of the sd_notify protocol. |
Integration with the systemd D-Bus API.
|
Integration with the systemd D-Bus API. |
Package import1 provides integration with the systemd-importd API.
|
Package import1 provides integration with the systemd-importd API. |
Package journal provides write bindings to the local systemd journal.
|
Package journal provides write bindings to the local systemd journal. |
Package login1 provides integration with the systemd logind API.
|
Package login1 provides integration with the systemd logind API. |
Integration with the systemd machined API.
|
Integration with the systemd machined API. |
Package sdjournal provides a low-level Go interface to the systemd journal wrapped around the sd-journal C API.
|
Package sdjournal provides a low-level Go interface to the systemd journal wrapped around the sd-journal C API. |
Package util contains utility functions related to systemd that applications can use to check things like whether systemd is running.
|
Package util contains utility functions related to systemd that applications can use to check things like whether systemd is running. |