#!/bin/sh # # 2016 Daniel Heule (hda at sfs.biz) # Copyright 2017, Philippe Gregoire # # This file is part of cdist. # # cdist is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # cdist is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # # # Returns the process name of pid 1 ( normaly the init system ) # for example at linux this value is "init" or "systemd" in most cases # case $(uname -s) in Linux) if test -d /proc/1/ then comm_name=$(cat /proc/1/comm) else # BusyBox's versions of ps and pgrep do not support some options # depending on which compile-time options have been used. # Both pgrep and ps are tried to get the command name comm_name=$( pgrep -P0 -l 2>/dev/null | awk '/^1[ \t]/ { print $2 }' || ps -o comm= -p 1 2>/dev/null) fi case $comm_name in systemd) echo systemd ;; init) # It could be anything... if test -h /proc/1/exe then init_exe=/proc/1/exe else init_exe=$(command -v "$comm_name") fi test -x "$comm_exe" || exit 1 case $("$comm_exe" --version | head -n 1) in *SysV*) echo init ;; *upstart*) echo upstart ;; *) echo "" ;; esac esac ;; FreeBSD|OpenBSD) ps -o comm= -p 1 2>/dev/null || true ;; Darwin) basename "$(ps -o comm= -p 1 2>/dev/null)" ;; *) # return a empty string as unknown value echo "" ;; esac