process.sh 858 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #!/usr/bin/env sh
  2. set -e
  3. process_status()
  4. {
  5. pids=`ps aux|grep $1|grep -v entrypoint|grep -v grep|awk '{print $1}'`
  6. if [ "$pids" ]; then
  7. echo $pids
  8. else
  9. echo 1
  10. fi
  11. }
  12. process_start()
  13. {
  14. status=`process_status $1`
  15. if [ "$status" == 1 ]; then
  16. echo "$1 starting"
  17. $@ >/dev/null &
  18. echo "$1 started"
  19. else
  20. echo "$1 started"
  21. fi
  22. }
  23. process_stop()
  24. {
  25. status=`process_status $1`
  26. if [ "$status" == 1 ]; then
  27. echo "$1 stoped"
  28. else
  29. echo "stoping $1"
  30. for pid in $status
  31. do
  32. kill -TERM ${pid} >/dev/null 2>&1
  33. done
  34. echo "$1 stoped"
  35. fi
  36. }
  37. process_restart()
  38. {
  39. process_stop $1
  40. sleep 5
  41. process_start $1
  42. }
  43. process_monit()
  44. {
  45. status=`process_status $1`
  46. if [ "$status" == 1 ]; then
  47. process_start $@
  48. fi
  49. }