diff --git a/hadoop-common-project/hadoop-common/src/main/bin/hadoop-functions.sh b/hadoop-common-project/hadoop-common/src/main/bin/hadoop-functions.sh index 9ea45873c09..9ef48b6fb78 100755 --- a/hadoop-common-project/hadoop-common/src/main/bin/hadoop-functions.sh +++ b/hadoop-common-project/hadoop-common/src/main/bin/hadoop-functions.sh @@ -1725,11 +1725,16 @@ function hadoop_status_daemon shift local pid + local pspid if [[ -f "${pidfile}" ]]; then pid=$(cat "${pidfile}") - if ps -p "${pid}" > /dev/null 2>&1; then - return 0 + if pspid=$(ps -o args= -p"${pid}" 2>/dev/null); then + # this is to check that the running process we found is actually the same + # daemon that we're interested in + if [[ ${pspid} =~ -Dproc_${daemonname} ]]; then + return 0 + fi fi return 1 fi