#!/bin/bash
#
# Licensed to Apache Software Foundation (ASF) under one or more contributor
# license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright
# ownership. Apache Software Foundation (ASF) licenses this file to you under
# the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

serverName="eventmesh-workflow"

#stop process
pidInfo=$(ps -ef | grep ${serverName} | grep -v grep | awk '{print $2}')
echo "`date` the pid info is $pidInfo"

for pid in $pidInfo;do
  kill -9 $pid
done

sleep 3

#check process num
num=$(ps -ef | grep ${serverName} | grep -v grep |wc -l)

if [ $num -gt 0 ];then
    echo "`date` after stop process in force way the processNum is $num still bigger than 0"
    exit 9
fi
exit 0