0

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

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

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

问题是当进程没有启动时,kill 失败,因为它没有 pid 来发出信号。我怎么能解决这个问题?

4

2 回答 2

1

如果你更喜欢单线

JPID=$(jps -m | grep NameOfTheMainClass  | awk '{print $1}') && [ -z "$JPID" ] || kill $JPID
于 2015-06-03T09:34:23.193 回答
0

尝试使其有条件:

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
于 2015-06-03T09:29:46.977 回答