fix incorrect systemd booted check
Check for the directory /run/systemd/system, this is described in
sd_booted(3). Reading /proc/1/comm will fail when /proc is mounted
with the `hidepid=2` option.
[NO NEW TESTS NEEDED]
Fixes
@@ -113,9 +113,9 @@ var (
// RunsOnSystemd returns whether the system is using systemd
func RunsOnSystemd() bool {
runsOnSystemdOnce.Do(func() {
- initCommand, err := os.ReadFile("/proc/1/comm")
- // On errors, default to systemd
- runsOnSystemd = err != nil || strings.TrimRight(string(initCommand), "\n") == "systemd"
+ // per sd_booted(3), check for this dir
+ fd, err := os.Stat("/run/systemd/system")
+ runsOnSystemd = err == nil && fd.IsDir()
})
return runsOnSystemd
}
