CHUKWA-743. Revised pid locking using standard Hadoop approach. (Eric Yang)
Project: http://git-wip-us.apache.org/repos/asf/chukwa/repo Commit: http://git-wip-us.apache.org/repos/asf/chukwa/commit/6def7b64 Tree: http://git-wip-us.apache.org/repos/asf/chukwa/tree/6def7b64 Diff: http://git-wip-us.apache.org/repos/asf/chukwa/diff/6def7b64 Branch: refs/heads/master Commit: 6def7b64d294f13ff2ef50e783d32cd0384c949f Parents: ecf9b2b Author: Eric Yang <[email protected]> Authored: Fri Apr 17 22:13:20 2015 -0700 Committer: Eric Yang <[email protected]> Committed: Fri Apr 17 22:13:20 2015 -0700 ---------------------------------------------------------------------- bin/chukwa | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/chukwa/blob/6def7b64/bin/chukwa ---------------------------------------------------------------------- diff --git a/bin/chukwa b/bin/chukwa index 3b60f14..1a3a341 100755 --- a/bin/chukwa +++ b/bin/chukwa @@ -155,18 +155,23 @@ pid="$CHUKWA_PID_DIR/chukwa-$CHUKWA_IDENT_STRING-$COMMAND.pid" if [ "$1" = "start" ]; then if [ -f $pid ]; then TARGET_PID=`cat $pid` - if [ $TARGET_PID == $$ ]; then - # run command - exec ${JAVA_HOME}/bin/java ${JAVA_OPT} \ - -Djava.library.path=${JAVA_LIBRARY_PATH} \ - -DCHUKWA_HOME=${CHUKWA_HOME} \ - -DCHUKWA_CONF_DIR=${CHUKWA_CONF_DIR} \ - -DCHUKWA_LOG_DIR=${CHUKWA_LOG_DIR} \ - -DCHUKWA_DATA_DIR=${CHUKWA_DATA_DIR} \ - -DAPP=${APP} -Dlog4j.configuration=chukwa-log4j.properties \ - -classpath ${CHUKWA_CONF_DIR}:${CLASSPATH}:${CHUKWA_CLASSPATH}:${tools} ${CLASS} $OPTS $@ - elif kill -0 `cat $pid` > /dev/null 2>&1; then - echo $COMMAND running as process `cat $pid`. Stop it first. + if kill -0 `cat $pid` > /dev/null 2>&1; then + if [ $TARGET_PID == $$ ]; then + # run command + exec ${JAVA_HOME}/bin/java ${JAVA_OPT} \ + -Djava.library.path=${JAVA_LIBRARY_PATH} \ + -DCHUKWA_HOME=${CHUKWA_HOME} \ + -DCHUKWA_CONF_DIR=${CHUKWA_CONF_DIR} \ + -DCHUKWA_LOG_DIR=${CHUKWA_LOG_DIR} \ + -DCHUKWA_DATA_DIR=${CHUKWA_DATA_DIR} \ + -DAPP=${APP} -Dlog4j.configuration=chukwa-log4j.properties \ + -classpath ${CHUKWA_CONF_DIR}:${CLASSPATH}:${CHUKWA_CLASSPATH}:${tools} ${CLASS} $OPTS $@ + else + echo $COMMAND running as process `cat $pid`. Stop it first. + exit 1 + fi + else + echo $COMMAND is not running, but found pid file $pid. exit 1 fi fi
