var ( ErrNoCGO = fmt.Errorf("go-systemd built with CGO disabled") )
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() (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() (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() 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() (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.