From 114a11628fb04c30cc96c9fd23db7a7fbc4fd02e Mon Sep 17 00:00:00 2001 From: Robert Yang Date: Tue, 17 May 2011 09:35:57 -0600 Subject: Add pidofproc to ${sysconfdir}/init.d/functions Add pidofproc to ${sysconfdir}/init.d/functions, this is used for getting the pid of the process. It uses pidof to implement currently, it may also use the pidfile or ps to implement in the future. Signed-off-by: Robert Yang --- .../initscripts/initscripts-1.0/functions | 32 ++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'meta/recipes-core/initscripts') 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 } -- cgit 1.2.3-korg