使用mac& amp;中的脚本重新启动Play Framework Activator。 Linux的

时间:2016-02-17 03:38:13

标签: scala unix playframework typesafe-activator

我正在尝试开发一个可以重新启动在指定端口上运行的激活器实例的脚本。我通常在15000端口运行我的激活项目,我的目标是使用脚本重新启动它。然后,我可以从网页上调用该脚本,以便远程重启激活器等。

到目前为止,我在Linux中找到了一个非常方便的实用工具fuser,它可以找到一个在指定端口侦听的进程并将其终止。类似的东西:

fuser -k 15000/tcp在linux上工作正常但不在mac上。

我想我还需要以某种方式跟踪激活器项目位置以便稍后启动它。

请告诉我您对如何做到这一点的建议和意见。

1 个答案:

答案 0 :(得分:1)

我正在使用bash文件。它适用于Linux和Mac OS。

它命名为loader.sh并将其放入您的发行版根目录。

要停止它,请使用kill命令和RUNNING_PID中存储的PID。

#!/bin/bash

# Change IP address and port here
address="127.0.0.1"
port="9000"

# Get directory and add it to PATH
dir="$( cd "$( dirname "$0" )" && pwd )"
export PATH="$dir:$dir/bin:$PATH"

function start() {
    # Check if we started already
    [ -f $dir/RUNNING_PID ] && return

    echo -n "Starting"

    # You can specify a config file with -Dconfig.resource
    # or a secret with -Dplay.crypto.secret
    myApp -Dhttp.port=$port -Dhttp.address=$address > /dev/null &

    echo "...started"
}

function stop() {
    [ -f $dir/RUNNING_PID ] || return
    echo -n "Stopping"
    kill -SIGTERM $(cat $dir/RUNNING_PID)
    while [ -f $dir/RUNNING_PID ]
    do
        sleep 0.5
    done

    echo "...stopped"
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage: loader.sh start|stop|restart"
        exit 1
        ;;
esac