stop.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #!/bin/bash
  2. cygwin=false;
  3. linux=false;
  4. case "`uname`" in
  5. CYGWIN*)
  6. cygwin=true
  7. ;;
  8. Linux*)
  9. linux=true
  10. ;;
  11. esac
  12. get_pid() {
  13. STR=$1
  14. PID=$2
  15. if $cygwin; then
  16. JAVA_CMD="$JAVA_HOME\bin\java"
  17. JAVA_CMD=`cygpath --path --unix $JAVA_CMD`
  18. JAVA_PID=`ps |grep $JAVA_CMD |awk '{print $1}'`
  19. else
  20. if $linux; then
  21. if [ ! -z "$PID" ]; then
  22. JAVA_PID=`ps -C java -f --width 1000|grep "$STR"|grep "$PID"|grep -v grep|awk '{print $2}'`
  23. else
  24. JAVA_PID=`ps -C java -f --width 1000|grep "$STR"|grep -v grep|awk '{print $2}'`
  25. fi
  26. else
  27. if [ ! -z "$PID" ]; then
  28. JAVA_PID=`ps aux |grep "$STR"|grep "$PID"|grep -v grep|awk '{print $2}'`
  29. else
  30. JAVA_PID=`ps aux |grep "$STR"|grep -v grep|awk '{print $2}'`
  31. fi
  32. fi
  33. fi
  34. echo $JAVA_PID;
  35. }
  36. base=`dirname $0`/..
  37. pidfile=$base/bin/canal_client.pid
  38. if [ ! -f "$pidfile" ];then
  39. echo "canal client is not running. exists"
  40. exit
  41. fi
  42. pid=`cat $pidfile`
  43. if [ "$pid" == "" ] ; then
  44. pid=`get_pid "appName=otter-canal-client"`
  45. fi
  46. echo -e "`hostname`: stopping canal $pid ... "
  47. kill $pid
  48. LOOPS=0
  49. while (true);
  50. do
  51. gpid=`get_pid "appName=otter-canal-client" "$pid"`
  52. if [ "$gpid" == "" ] ; then
  53. echo "Oook! cost:$LOOPS"
  54. `rm $pidfile`
  55. break;
  56. fi
  57. let LOOPS=LOOPS+1
  58. sleep 1
  59. done