github.com/pingcap/ticdc@v0.0.0-20220526033649-485a10ef2652/tests/_utils/random_kill_process (about)

     1  #!/bin/bash
     2  # parameter 1: process name
     3  
     4  process=$1
     5  retry_count=20
     6  pids=($(pidof $process))
     7  echo "list pids " ${pids[@]}
     8  
     9  if [ ${#pids[@]} == 0 ]; then
    10      exit 0
    11  fi
    12  
    13  pid=${pids[$RANDOM % ${#pids[@]}]}
    14  
    15  echo "kill pid $pid"
    16  kill $pid
    17  
    18  counter=0
    19  while [ $counter -lt $retry_count ]; do
    20      ps -p $pid > /dev/null 2>&1
    21      ret=$?
    22      if [ "$ret" != "0" ]; then
    23          echo "process $pid already exit"
    24          exit 0
    25      fi
    26      ((counter+=1))
    27      sleep 0.5
    28      echo "wait process $pid exit for $counter-th time..."
    29  done
    30  
    31  echo "wait process $pid exit timeout"
    32  exit 1