v0.0.0-...-d3cd4ed Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Nov 4, 2019 License: Apache-2.0 Imports: 8 Imported by: 358



Package util contains utility functions related to systemd that applications can use to check things like whether systemd is running. Note that some of these functions attempt to manually load systemd libraries at runtime rather than linking against them.



This section is empty.


View Source
var (
	ErrNoCGO = fmt.Errorf("go-systemd built with CGO disabled")


func CurrentUnitName

func CurrentUnitName() (string, error)

CurrentUnitName attempts to retrieve the name of the systemd system unit from which the calling process has been invoked. It wraps the systemd `sd_pid_get_unit` call, with the same caveat: for processes not part of a systemd system unit, this function will return an error.

func GetMachineID

func GetMachineID() (string, error)

GetMachineID returns a host's 128-bit machine ID as a string. This functions similarly to systemd's `sd_id128_get_machine`: internally, it simply reads the contents of /etc/machine-id http://www.freedesktop.org/software/systemd/man/sd_id128_get_machine.html

func GetRunningSlice

func GetRunningSlice() (string, error)

GetRunningSlice attempts to retrieve the name of the systemd slice in which the current process is running. This function is a wrapper around the libsystemd C library; if it cannot be opened, an error is returned.

func IsRunningSystemd

func IsRunningSystemd() bool

IsRunningSystemd checks whether the host was booted with systemd as its init system. This functions similarly to systemd's `sd_booted(3)`: internally, it checks whether /run/systemd/system/ exists and is a directory. http://www.freedesktop.org/software/systemd/man/sd_booted.html

func RunningFromSystemService

func RunningFromSystemService() (bool, error)

RunningFromSystemService tries to detect whether the current process has been invoked from a system service. The condition for this is whether the process is _not_ a user process. User processes are those running in session scopes or under per-user `systemd --user` instances.

To avoid false positives on systems without `pam_systemd` (which is responsible for creating user sessions), this function also uses a heuristic to detect whether it's being invoked from a session leader process. This is the case if the current process is executed directly from a service file (e.g. with `ExecStart=/this/cmd`). Note that this heuristic will fail if the command is instead launched in a subshell or similar so that it is not session leader (e.g. `ExecStart=/bin/bash -c "/this/cmd"`)

This function is a wrapper around the libsystemd C library; if this is unable to successfully open a handle to the library for any reason (e.g. it cannot be found), an error will be returned.


This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL