Skip to content
forked from coreos/go-systemd

Go bindings to systemd socket activation, journal, D-Bus, and unit files

License

Notifications You must be signed in to change notification settings

cedws/go-systemd

This branch is 30 commits behind coreos/go-systemd:main.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f5f8d59 · Apr 1, 2022
Apr 1, 2022
Mar 25, 2022
Mar 28, 2018
Jan 17, 2022
Mar 25, 2022
Jun 14, 2021
Jan 17, 2022
Nov 4, 2019
Feb 1, 2022
Jan 17, 2022
Jan 17, 2022
Mar 15, 2021
Mar 24, 2021
Mar 16, 2020
Mar 25, 2022
Nov 4, 2019
May 27, 2021
Dec 22, 2015
Sep 13, 2013
Jan 4, 2018
May 7, 2021
Jan 4, 2018
Mar 30, 2021
Mar 30, 2021

Repository files navigation

go-systemd

godoc minimum golang 1.12

Go bindings to systemd. The project has several packages:

  • activation - for writing and using socket activation from Go
  • daemon - for notifying systemd of service status changes
  • dbus - for starting/stopping/inspecting running services and units
  • journal - for writing to systemd's logging service, journald
  • sdjournal - for reading from journald by wrapping its C API
  • login1 - for integration with the systemd logind API
  • machine1 - for registering machines/containers with systemd
  • unit - 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://github.com/coreos/go-systemd/tree/main/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. API documentation is available online.

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.

About

Go bindings to systemd socket activation, journal, D-Bus, and unit files

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.3%
  • Shell 0.7%