jmeter服务脚本。重新启动无法正常工作 [英] jmeter service script. restart not working

查看:324
本文介绍了jmeter服务脚本。重新启动无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在Centos 6.6上为Apache jmeter使用以下服务脚本。

I am attempting to use the following service script on Centos 6.6 for apache jmeter.

#!/bin/sh
### BEGIN INIT INFO
# chkconfig:         2345 85 15
# Provides:          jmeter-server
# Required-Start:    $syslog $local_fs
# Required-Stop:     $syslog $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Apache JMeter Remote Server
# Description:       Apache JMeter Remote Server runs JMeter tests issued from a remote server.
### END INIT INFO

# Author: Brian Flad <bflad417 at gmail dot com>

PATH=/sbin:/usr/sbin:/bin:/usr/bin
NAME=jmeter
JMETER_PATH=/usr/share/jmeter
# RMI_HOST_DEF is referenced/used inside the $JMETER_PATH/bin/$NAME-server script
# Change this to your IP
export RMI_HOST_DEF="-Djava.rmi.server.hostname=10.0.2.15"
SCRIPTNAME=/etc/init.d/$NAME
JAVA_PID=$(pgrep -f "[A]pacheJMeter.jar $RMI_HOST_DEF -Dserver_port=1099")

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0

[ -f $JMETER_PATH/bin/$NAME-server ] || exit 0
[ -f $JMETER_PATH/bin/$NAME ] || exit 0

#
# Function that starts the daemon/service
#
do_start()
{
        [ -n "$JAVA_PID" ] && echo "$NAME already started" && exit 0
        echo -n "Starting $NAME: "
        $JMETER_PATH/bin/$NAME-server 2>&1 &
        RETVAL=$?
        MODE="normal"
        echo "$NAME started in $MODE mode"
        [ $RETVAL = 0 ] && touch /var/lock/subsys/$NAME
}

#
# Function that stops the daemon/service
#
do_stop()
{
        [ -z "$JAVA_PID" ] && echo "$NAME already stopped" && exit 0
        echo -n "Shutting down $NAME: "
        kill "$JAVA_PID"
        RETVAL=$?
        echo "return is $RETVAL"
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/$NAME
}

#
# Function that gives status of daemon/server
#
do_status()
{
        if [ -n "$JAVA_PID" ]; then
            MODE="RUNNING pid $JAVA_PID"
            RETVAL=0
        else
            MODE="STOPPED"
            RETVAL=1
        fi
        echo "$NAME is $MODE"
}

#
# Function that stops and restarts daemon/server
#
do_restart()
{
        do_stop
        do_start
}

case "$1" in
  start)
        do_start
        ;;
  stop)
        do_stop
        ;;
  status)
        do_status
        ;;
  restart|force-reload)
        do_restart
        ;;
  condrestart)
        [ -e /var/lock/subsys/$NAME ] && do_restart
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
        exit 3
        ;;
esac

exit $RETVAL

service jmeter启动和服务jmeter stop可以正常工作,但是当我尝试执行jmeter重新启动服务时,它正在停止Java实例,但是由于认为jmeter已经在运行而没有再次启动它。

service jmeter start and service jmeter stop are working fine but when I attempt to do service jmeter restart, it is stopping the java instance but it is not starting it again as it thinks that jmeter is already running.

任何指针都将不胜感激。

Any pointers would be appreciated.

推荐答案

您没有重置/更新 JAVA_PID 在停止和启动命令之间,因此 start 将根据以下条件退出:

You are not resetting/updating JAVA_PID between stop and start commands, so start would exit based on the following condition:

 [ -n "$JAVA_PID" ] && echo "$NAME already started" && exit 0 

您需要重置/更新 JAVA_PID 停止后,例如

you need to either reset/update JAVA_PID after stopping it, e.g.

update_pid()
{
    JAVA_PID=$(pgrep -f "[A]pacheJMeter.jar $RMI_HOST_DEF -Dserver_port=1099")
}
...
do_restart()
{
     do_stop
     update_pid
     do_start
}

这篇关于jmeter服务脚本。重新启动无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆