diff --git a/meta/recipes-core/initscripts/initscripts-1.0/functions b/meta/recipes-core/initscripts/initscripts-1.0/functions index ac99e112c7..c1eac3efda 100644 --- a/meta/recipes-core/initscripts/initscripts-1.0/functions +++ b/meta/recipes-core/initscripts/initscripts-1.0/functions @@ -3,6 +3,35 @@ # functions This file contains functions to be used by most or all # shell scripts in the /etc/init.d directory. # +# NOTE: The pidofproc () doesn't support the process which is a script unless +# the pidof supports "-x" option. If you want to use it for such a +# process: +# 1) If there is no "pidof -x", replace the "pidof $1" with another +# command like(for core-image-minimal): +# ps | awk '/'"$1"'/ {print $1}' +# Or +# 2) If there is "pidof -x", replace "pidof" with "pidof -x". +# +# pidofproc - print the pid of a process +# $1: the name of the process +pidofproc () { + + # pidof output null when no program is running, so no "2>/dev/null". + pid=`pidof $1` + case $? in + 0) + echo $pid + return 0 + ;; + 127) + echo "ERROR: command pidof not found" >&2 + exit 127 + ;; + *) + return $? + ;; + esac +} machine_id() { # return the machine ID awk 'BEGIN { FS=": " } /Hardware/ \ @@ -10,6 +39,5 @@ machine_id() { # return the machine ID } killproc() { # kill the named process(es) - pid=`/bin/pidof $1` - [ "$pid" != "" ] && kill $pid + pid=`pidofproc $1` && kill $pid }