【问题标题】:Get pid of application started by mvn exec plugin获取由 mvn exec 插件启动的应用程序的 pid
【发布时间】:2013-03-31 14:01:21
【问题描述】:

我想编写 .sh 脚本来杀死由 maven exec 插件启动的进程。目前我正在尝试按开始时间获取 PID,但这种方法不能保证不会与其他进程发生冲突。

请问,是否有办法获取 PID 或杀死由 mvn exec 启动的进程。

谢谢。

【问题讨论】:

  • unix 有进程层次的概念吗?如果是,您可以查找 maven 构建的子进程。
  • 如果你从另一个进程中杀掉,你会从哪里得到 PID?您最好的选择是在分叉的进程中添加一些可识别的命令行参数,并以此为基础。

标签: unix maven sh


【解决方案1】:

最好的方法是使用 start-stop-daemon 启动 maven 进程。我使用来自 tomcat init.d 的修改后的 bash 脚本来启动/停止 java 或 maven 程序作为守护进程。这是一个sn-p。请根据需要自定义:

#!/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
            ;;

【讨论】:

    猜你喜欢
    • 2013-02-07
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2012-10-23
    相关资源
    最近更新 更多