Advertisement
iarmin

runtool

May 2nd, 2011
287
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.58 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. #: Filename    : runtool.sh
  4. #: Title       : runtool
  5. #: Author      : "Iarmin" <[email protected]>
  6. #: Version     : 0.1
  7. #: Description : Adding service like control to your scripts. Easy to implement.
  8. #: Dependency  : none
  9. #: Usage       : Place the following code into the beginning of your script
  10. #  
  11. # PIDFILE="/tmp/yourprogram.lock"  # the pidfile path
  12. # source ./runtool.sh
  13. #
  14. # # ... and here comes your code
  15. #
  16.  
  17. runtools_usage() {
  18.     echo "Usage: $0 [start|stop|restart|status}"
  19.     exit 1
  20. }
  21.  
  22. process_exists() {
  23.     if [ -n "$1" ] && [ -d "/proc/$1" ]; then
  24.         return 0
  25.     else
  26.         return 1
  27.     fi
  28. }
  29.  
  30. if [ -z "$1" ]; then
  31.     runtools_usage
  32. fi
  33.  
  34. if [ -z "$PIDFILE" ]; then
  35.     echo "No \$PIDFILE set"
  36.     exit 2
  37. fi
  38.  
  39. case "$1" in
  40.     "start")
  41.         echo 'Starting...' 
  42.         if process_exists "$(cat $PIDFILE 2> /dev/null)"; then
  43.             echo "  Already running!"
  44.             exit 3
  45.         fi
  46.         ( $0 daemon & ) &> /dev/null
  47.         exit 0
  48.     ;;
  49.     "stop")
  50.         echo 'Stopping...'
  51.         if process_exists "$(cat $PIDFILE 2> /dev/null)" ; then
  52.             _PID="$(cat $PIDFILE 2> /dev/null)"
  53.             kill "$_PID"
  54.             sleep 1
  55.             if process_exists "$_PID"; then
  56.                 kill -9 "$_PID"
  57.             fi
  58.             exit 0
  59.         else
  60.             echo "  Not running!"
  61.             exit 4
  62.         fi
  63.         exit 0
  64.     ;;
  65.     "restart") 
  66.         $0 stop
  67.         sleep 1
  68.         $0 start
  69.         exit 0
  70.     ;;
  71.     "daemon")
  72.         DAEMON=1
  73.         echo "$$" > "$PIDFILE"
  74.     ;;
  75.     "status")
  76.         if process_exists "$(cat $PIDFILE 2> /dev/null)"; then
  77.             echo "running: $(cat $PIDFILE 2> /dev/null)"
  78.         else
  79.             echo "not running"
  80.         fi
  81.         exit 0
  82.     ;;
  83.     *)
  84.         runtools_usage
  85.     ;;
  86. esac
  87.  
  88. if [ "$DAEMON" != "1" ]; then
  89.     exit
  90. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement