jmeter 服务脚本。重新启动不工作
jmeter service script. restart not working
我正尝试在 Centos 6.6 上为 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 "" 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 start 和 service jmeter stop 工作正常,但是当我尝试重新启动 service jmeter 时,它正在停止 java 实例,但它不会再次启动它,因为它认为 jmeter 已经 运行.
任何指点将不胜感激。
您不在停止和启动命令之间 resetting/updating JAVA_PID
,因此 start
将根据以下条件退出:
[ -n "$JAVA_PID" ] && echo "$NAME already started" && exit 0
您需要在停止后 reset/update JAVA_PID
,例如
update_pid()
{
JAVA_PID=$(pgrep -f "[A]pacheJMeter.jar $RMI_HOST_DEF -Dserver_port=1099")
}
...
do_restart()
{
do_stop
update_pid
do_start
}
我正尝试在 Centos 6.6 上为 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 "" 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 start 和 service jmeter stop 工作正常,但是当我尝试重新启动 service jmeter 时,它正在停止 java 实例,但它不会再次启动它,因为它认为 jmeter 已经 运行.
任何指点将不胜感激。
您不在停止和启动命令之间 resetting/updating JAVA_PID
,因此 start
将根据以下条件退出:
[ -n "$JAVA_PID" ] && echo "$NAME already started" && exit 0
您需要在停止后 reset/update JAVA_PID
,例如
update_pid()
{
JAVA_PID=$(pgrep -f "[A]pacheJMeter.jar $RMI_HOST_DEF -Dserver_port=1099")
}
...
do_restart()
{
do_stop
update_pid
do_start
}