From 4b9bc5981098303bd13a5b85826b02f114b5b1cc Mon Sep 17 00:00:00 2001 From: EnumDev Date: Mon, 10 Mar 2025 22:42:18 +0200 Subject: [PATCH] Change init system checking code --- utils.go | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/utils.go b/utils.go index 94196a3..0d98f18 100644 --- a/utils.go +++ b/utils.go @@ -419,18 +419,27 @@ func GetInitSystem() string { return strings.TrimSpace(string(out)) } - link, err := os.Readlink("/sbin/init") + process, err := ps.FindProcess(1) if err != nil { - return "Unknown" + return "" } - if path.Base(link) == "systemd" { - return "Systemd " + runCommand("systemctl --version | head -1 | awk '{print $2}'") - } else if path.Base(link) == "openrc-init" { + + // Special cases + // OpenRC check + if _, err := os.Stat("/usr/sbin/openrc"); err == nil { return "OpenRC " + runCommand("openrc --version | awk '{print $3}'") - } else if path.Base(link) == "runit-init" { + } + + // Default PID 1 process name checking + switch process.Executable() { + case "systemd": + return "Systemd " + runCommand("systemctl --version | head -n1 | awk '{print $2}'") + case "runit": return "Runit" - } else { - return "Unknown" + case "dinit": + return "Dinit " + runCommand("dinit --version | head -n1 | awk '{print substr($3, 1, length($3)-1)}'") + default: + return process.Executable() } }