run.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #!/bin/sh
  2. SETT_DAEMON_MODE=1
  3. SETT_DAEMON_PATH="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
  4. SETT_DAEMON_FOLDER_LOGS="$SETT_DAEMON_PATH/logs"
  5. SETT_DAEMON_LOGS_WORK_FILE="$SETT_DAEMON_FOLDER_LOGS/all.log"
  6. SETT_DAEMON_PID_FILE="$SETT_DAEMON_PATH/pid"
  7. # Include funcs
  8. . "$SETT_DAEMON_PATH/funcs.sh"
  9. check_util "mkdir"
  10. check_util "chmod"
  11. check_util "touch"
  12. check_util "cat"
  13. check_util "kill"
  14. check_util "rm"
  15. get_util "mkdir" UTIL_MKDIR
  16. get_util "chmod" UTIL_CHMOD
  17. get_util "touch" UTIL_TOUCH
  18. get_util "cat" UTIL_CAT
  19. get_util "kill" UTIL_KILL
  20. get_util "rm" UTIL_RM
  21. check() {
  22. if [ ! -d "$SETT_DAEMON_FOLDER_LOGS" ]; then
  23. $UTIL_MKDIR "$SETT_DAEMON_FOLDER_LOGS"
  24. $UTIL_CHMOD 0755 "$SETT_DAEMON_FOLDER_LOGS"
  25. fi
  26. }
  27. log_str() {
  28. process=$1
  29. shift
  30. log_date=$(date '+%F %T');
  31. log_string="[$log_date] [$$]: $*"
  32. echo "$log_string" >> "$SETT_DAEMON_LOGS_WORK_FILE"
  33. }
  34. loop() {
  35. # Include body
  36. . "$SETT_DAEMON_PATH/loop.sh"
  37. }
  38. start() {
  39. check
  40. if [ -f "$SETT_DAEMON_PID_FILE" ]; then
  41. _pid=`$UTIL_CAT $SETT_DAEMON_PID_FILE`
  42. is_pid_runned "$_pid" rbool
  43. if [ "$rbool" = "1" ]; then
  44. log_str "0" "Daemon already running with pid = $_pid"
  45. echo "Daemon already running with pid = $_pid"
  46. exit 0
  47. fi
  48. fi
  49. cd /
  50. if [ "$SETT_DAEMON_MODE" = 1 ]; then
  51. exec >> $SETT_DAEMON_LOGS_WORK_FILE
  52. exec 2>> $SETT_DAEMON_LOGS_WORK_FILE
  53. exec < /dev/null
  54. (
  55. while [ 1 ]
  56. do
  57. loop
  58. sleep 1
  59. done
  60. exit 0
  61. )&
  62. echo $! > $SETT_DAEMON_PID_FILE
  63. else
  64. while [ 1 ]
  65. do
  66. loop
  67. sleep 1
  68. done
  69. exit 0
  70. fi
  71. }
  72. stop() {
  73. if [ -f "$SETT_DAEMON_PID_FILE" ]; then
  74. _pid=`$UTIL_CAT $SETT_DAEMON_PID_FILE`
  75. `$UTIL_KILL $_pid`
  76. rt="$?"
  77. if [ "$rt" = "0" ]; then
  78. log_str "0" "Daemon stoped"
  79. echo "Daemon stoped"
  80. `$UTIL_RM $SETT_DAEMON_PID_FILE`
  81. else
  82. log_str "0" "Error stop daemon"
  83. echo "Error stop daemon"
  84. fi
  85. else
  86. log_str "0" "Daemon is not runned"
  87. echo "Daemon is not runned"
  88. fi
  89. }
  90. status() {
  91. if [ -f "$SETT_DAEMON_PID_FILE" ]; then
  92. _pid=`$UTIL_CAT $SETT_DAEMON_PID_FILE`
  93. is_pid_runned "$_pid" rbool
  94. if [ "$rbool" = "1" ]; then
  95. echo "Daemon is runned with pid = $_pid"
  96. else
  97. echo "Daemon is not runned"
  98. fi
  99. else
  100. echo "Daemon is not runned"
  101. fi
  102. }
  103. usage() {
  104. echo "$0 (once|start|stop|status)"
  105. }
  106. case $1 in
  107. "once")
  108. SETT_DAEMON_MODE=0
  109. start
  110. ;;
  111. "start")
  112. start
  113. ;;
  114. "stop")
  115. stop
  116. ;;
  117. "status")
  118. status
  119. ;;
  120. *)
  121. usage
  122. ;;
  123. esac
  124. exit