如果 运行 在 Raspbian 中停止 Java 进程

Stop Java Process if Running in Raspbian

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

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

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

问题是当进程未启动时,kill 失败,因为它没有 pid 信号。我该如何解决?

尝试使其成为有条件的:

export MAIN_CLASSNAME=""

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

if isRunning; then
  kill $PID       
fi

如果你喜欢单线

JPID=$(jps -m | grep NameOfTheMainClass  | awk '{print }') && [ -z "$JPID" ] || kill $JPID