in sharedlibraries/statushelper/statushelper.go [217:250]
func agentEnabledAndRunningLinux(ctx context.Context, serviceName string, exec commandlineexecutor.Execute) (isEnabled bool, isRunning bool, err error) {
// 1. Check if the service is enabled to start at boot.
result := exec(ctx, commandlineexecutor.Params{
Executable: "sudo",
ArgsToSplit: fmt.Sprintf("systemctl is-enabled %s", serviceName),
})
if result.StdErr != "" {
return false, false, fmt.Errorf("could not get the agent service enabled status: %#v", result)
}
isEnabled = false
// systemctl is-enabled returns 0 for a number of service states, confirm
// that the service is actually enabled.
if result.ExitCode == 0 && strings.Contains(result.StdOut, "enabled") {
isEnabled = true
}
// 2. Check if the service is running. Note that a service can be disabled
// but still running.
result = exec(ctx, commandlineexecutor.Params{
Executable: "sudo",
ArgsToSplit: fmt.Sprintf("systemctl is-active %s", serviceName),
})
if result.StdErr != "" {
return false, false, fmt.Errorf("could not get the agent service active status: %#v", result)
}
isRunning = false
// is-running returns 0 only if the service is active.
if result.ExitCode == 0 {
isRunning = true
}
return isEnabled, isRunning, nil
}