当前位置: 首页 > 面试题库 >

jmeter服务脚本。重新启动无法正常工作

洪富
2023-03-14
问题内容

我正在尝试在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 "$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 start和service jmeter stop正常运行,但是当我尝试重新启动service
jmeter时,它正在停止Java实例,但由于认为jmeter已经在运行,因此没有再次启动它。

任何指针将不胜感激。


问题答案:

您没有JAVA_PID在stop和start命令之间进行重置/更新,因此start将基于以下情况退出:

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

您需要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
}


 类似资料:
  • 我想在我的Parallela板启动时运行一个bash脚本,它有Ubuntu。我搜索了SO,在这里找到了说明: 在linux ubuntu下启动时自动运行程序 在Linux上启动时以编程方式运行 我的bash脚本是test。sh,只有一行: 1) 我尝试的第一种方法是添加到脚本的aboslute路径: 2) 我尝试的第二种方法是遵循上面公认的答案。 在这两种情况下,脚本都是在引导后执行的,并且有一个

  • 我目前在我的node js服务器上安装了ts-node-dev,并让它使用--respawn标志监视我的.ts文件。我的服务器正在成功地重新启动,但是当.ts文件更改时,我需要运行类似的命令来编译更改的文件(或所有文件),以确保我的更改存在于重新启动的服务器中。 我似乎找不到在服务器重新启动时运行脚本的方法。 我试过这样的事情: 但它试图将命令解析为文件名。 如何将脚本绑定到我的重启过程中? 这是

  • 问题内容: 这正是我想要做的 我用表格打开一个页面,该表格包含有关用户的信息 我的getText()元素指示表中的用户数(例如“列表中的11个用户”) 我删除“列表中的用户”部分,并将字符串转换为整数,以便稍后在for循环中使用 我需要通过用户名(第9列)查找某些用户,并获取数字,该数字是该用户信息所在的行数(这就是我被卡住的地方) 我转到该行的第一列(该行将成为该特定用户的编辑按钮),然后单击它

  • 问题内容: 我已经建立了俄罗斯方块游戏。现在,我已经使用JPanel来显示内容和块(使用paintComponents()方法)。 问题是,当我尝试从另一个JFrame调用tetris程序时,它根本无法绘制。 我的俄罗斯方块主菜单的代码是: 当调用MatrixBoard的构造函数时,俄罗斯方块游戏会在新窗口中开始。但是,这些块在屏幕上不可见。MatrixBoard的代码是: 请帮忙。我怀疑问题出在

  • 我们在Android8.1及以上版本中偶然发现了一个我们以前从未见过的问题,不幸的是,这使得我们的应用程序对我们的用户来说不太方便。在Android 8.1及以上版本中,当用户刷屏杀死应用程序时,后台粘性服务不会重新启动。

  • 问题内容: 我最近将项目升级到grails 2.3.0。一切正常,除非我每次更改代码时都遇到自动重装无法正常工作的问题。这包括所有项目人工制品- 控制器,域,服务,gsps,css和javascript文件。 我的较早版本的grails可以正常工作,并且每次进行更改时都会重新加载和重新编译。 我知道这个问题很普遍,我已经搜寻了吉拉(Jira),纳布尔(Nabble),在这里呆了好几天,但我发现没有