4

maven exec プラグインによって開始されたプロセスを強制終了する .sh スクリプトを作成したいと考えています。現時点では、開始時間までに PID を取得しようとしていますが、このアプローチは他のプロセスとの衝突がないことを保証しません。

PID を取得する方法や、 mvn exec によって開始されたプロセスを強制終了する方法があるかどうかを教えてください。

ありがとう。

4

1 に答える 1

0

最良の方法は、start-stop-daemon を使用して Maven プロセスを開始することです。Tomcat init.d から変更された bash スクリプトを使用して、デーモンとして Java または Maven プログラムを開始/停止します。ここにスニペットがあります。必要に応じてカスタマイズしてください:

#!/bin/sh    
case "$1" in
      start)
            log_daemon_msg "Starting $DESC" "$NAME"
            start-stop-daemon --start -b -u "$MAVEN_USER" -g "$MAVEN_GROUP" \
                    -c "$MAVEN_USER" -d "$MAVEN_HOME" -p "$MAVEN_PID" -m \
                    -x mvn -- exec:java -Dexec.mainClass="com.company.Application" -Dexec.classpathScope=runtime -Dexec.args="/home/user 192.168.1.1" 2>&1
            status="$?"
            set +a -e
            else
                log_progress_msg "(already running)"
                    log_end_msg 0
            fi
            ;;
      stop)
            log_daemon_msg "Stopping $DESC" "$NAME"

            set +e
            if [ -f "$MAVEN_PID" ]; then
                    start-stop-daemon --stop --pidfile "$MAVEN_PID" \
                            --user "$MAVEN_USER" \
                            --retry=TERM/20/KILL/5 >/dev/null
                    if [ $? -eq 1 ]; then
                            log_progress_msg "$DESC is not running but pid file exists, cleaning up"
                    elif [ $? -eq 3 ]; then
                            PID="`cat $MAVEN_PID`"
                            log_failure_msg "Failed to stop $NAME (pid $PID)"
                            exit 1
                    fi
                    rm -f "$MAVEN_PID"
                    rm -rf "$JVM_TMP"
            else
                    log_progress_msg "(not running)"
            fi
            log_end_msg 0
            set -e
            ;;
于 2018-09-07T20:08:10.440 に答える