serverdaemon 877 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. # 2026-03-10 09:10 updated by niujiuru
  6. . "$(dirname "$0")/set_env"
  7. . "$(dirname "$0")/modules/funcs/functions.sh"
  8. export_env
  9. INTERVAL=60
  10. pidfile="${APPRUNS_PATH}/serverdaemon.pid"
  11. if [ -f "$pidfile" ]; then
  12. pid=$(cat "$pidfile" 2>/dev/null)
  13. if [ -n "$pid" ] && kill -0 "$pid" 2>/dev/null; then
  14. exit 0
  15. fi
  16. rm -f "$pidfile"
  17. fi
  18. mkdir -p "$(dirname "$pidfile")"
  19. echo $$ > "$pidfile"
  20. start_if_needed()
  21. {
  22. name="$1"
  23. path="${APPBINS_PATH}/${name}"
  24. lock="${APPRUNS_PATH}/${name}.lock"
  25. if ! is_running "$path"
  26. then
  27. rm -f "$lock"
  28. echo "starting $name: $path"
  29. "$path" &
  30. fi
  31. }
  32. while true
  33. do
  34. start_if_needed "${YFKJ_SSHD}" # 远程运维服务
  35. start_if_needed "${APPNAME}" # ㊣主应用程序
  36. sleep $INTERVAL
  37. done