serverdaemon 835 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/bin/sh
  2. # a daemon, start and monitor servers
  3. # 2013-09-27 09:28 created by niujiuru
  4. # 2026-01-05 13:40 updated by niujiuru
  5. . "$(dirname "$0")/set_env"
  6. . "$(dirname "$0")/modules/funcs/functions.sh"
  7. export_env
  8. INTERVAL=60
  9. pidfile="${APPRUNS_PATH}/serverdaemon.pid"
  10. if [ -f "$pidfile" ]; then
  11. pid=$(cat "$pidfile" 2>/dev/null)
  12. if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
  13. exit 0
  14. fi
  15. rm -f "$pidfile"
  16. fi
  17. mkdir -p "$(dirname "$pidfile")"
  18. echo $$ > "$pidfile"
  19. start_if_needed()
  20. {
  21. name="$1"
  22. path="$2"
  23. lock="${APPRUNS_PATH}/${name}.lock"
  24. if ! is_running "$path"
  25. then
  26. rm -f "$lock"
  27. echo "starting $name: $path"
  28. "$path" &
  29. fi
  30. }
  31. while true
  32. do
  33. start_if_needed "${YFKJ_SSHD}" "${APPBINS_PATH}/${YFKJ_SSHD}"
  34. start_if_needed "${APPNAME}" "${APPBINS_PATH}/${APPNAME}"
  35. sleep $INTERVAL
  36. done