jmeter服务脚本。重新启动无法正常工作 [英] jmeter service script. restart not working
问题描述
我试图在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屋!