有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

命令行界面在Raspbian中运行时停止Java进程

我想确保Raspbian中的java进程在启动它的新实例之前停止

到目前为止,我的方法是尝试创建一个单行命令,从命令行停止进程,因为这是在GO continuos交付工具中包含此步骤的最简单方法。到目前为止,我能够想出这个解决方案,它有效地停止了这个过程:

kill $(jps -m | grep NameOfTheMainClass | awk '{print $1}')

但是问题是,当进程未启动时,kill失败,因为它没有pid信号。我怎样才能解决这个问题


共 (2) 个答案

  1. # 1 楼答案

    如果你喜欢一行的话

    JPID=$(jps -m | grep NameOfTheMainClass  | awk '{print $1}') && [ -z "$JPID" ] || kill $JPID
    
  2. # 2 楼答案

    试着让它有条件:

    export MAIN_CLASSNAME=""
    
    isRunning()
    {
      PID=`ps ax | grep MAIN_CLASSNAME | grep -v grep | awk '{print $1}'`
      is_running="false"
      if [ ! -z "$PID" ]; then
        is_running="true"
      fi
      test "$is_running" = "true"
    }
    
    if isRunning; then
      kill $PID       
    fi