Manpage provided by systemd states that the sd_booted function internally "checks whether the directory /run/systemd/system/ exists", as well as that "a simple check like this can also be implemented trivially in shell or any other language". This implies the behaviour of this function can be expected to be stable. Signed-off-by: Ophestra Umiker <cat@ophivana.moe>
		
			
				
	
	
		
			29 lines
		
	
	
		
			486 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			486 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"errors"
 | 
						|
	"fmt"
 | 
						|
	"io/fs"
 | 
						|
	"os"
 | 
						|
)
 | 
						|
 | 
						|
const (
 | 
						|
	systemdCheckPath = "/run/systemd/system"
 | 
						|
)
 | 
						|
 | 
						|
// https://www.freedesktop.org/software/systemd/man/sd_booted.html
 | 
						|
func sdBooted() bool {
 | 
						|
	_, err := os.Stat(systemdCheckPath)
 | 
						|
	if err != nil {
 | 
						|
		if verbose {
 | 
						|
			if errors.Is(err, fs.ErrNotExist) {
 | 
						|
				fmt.Println("System not booted through systemd")
 | 
						|
			} else {
 | 
						|
				fmt.Println("Error accessing", systemdCheckPath+":", err.Error())
 | 
						|
			}
 | 
						|
		}
 | 
						|
		return false
 | 
						|
	}
 | 
						|
	return true
 | 
						|
}
 |