rc.ntp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #!@l_prefix@/lib/openpkg/bash @l_prefix@/etc/rc
  2. ##
  3. ## rc.ntp -- Run-Commands
  4. ##
  5. %config
  6. ntp_enable="$openpkg_rc_def"
  7. ntp_mode="daemon"
  8. ntp_log_prolog="true"
  9. ntp_log_epilog="true"
  10. ntp_log_numfiles="10"
  11. ntp_log_minsize="1M"
  12. ntp_log_complevel="9"
  13. %common
  14. ntp_pidfile="@l_prefix@/var/ntp/ntpd.pid"
  15. ntp_signal () {
  16. [ -f $ntp_pidfile ] && kill -$1 `cat $ntp_pidfile`
  17. }
  18. ntp_once () {
  19. @l_prefix@/bin/ntpdate \
  20. `grep "^server" @l_prefix@/etc/ntp/ntp.conf |\
  21. awk '{ printf(" %s", $2); }'` || true
  22. }
  23. %status -u @l_susr@ -o
  24. ntp_usable="unknown"
  25. ntp_active="no"
  26. rcService ntp enable yes && \
  27. [ ".$ntp_mode" = ".daemon" ] && \
  28. ntp_signal 0 && ntp_active="yes"
  29. echo "ntp_enable=\"$ntp_enable\""
  30. echo "ntp_usable=\"$ntp_usable\""
  31. echo "ntp_active=\"$ntp_active\""
  32. %start -p 200 -u @l_susr@
  33. rcService ntp enable yes || exit 0
  34. rcService ntp active yes && exit 0
  35. # under both periodical and daemon mode, synchronize local machine
  36. # once manually -- either to fill the gap between startup time and
  37. # the first run of the cron jobs (periodical mode) or to perform
  38. # a possible large time offset which ntpd does not perform itself
  39. # (daemon mode).
  40. case "$ntp_mode" in
  41. once | \
  42. daemon | \
  43. quarterly | hourly | daily | weekly | monthly )
  44. ntp_once
  45. ;;
  46. esac
  47. # run the NTP daemon for continued synchronization
  48. if [ ".$ntp_mode" = ".daemon" ]; then
  49. @l_prefix@/bin/ntpd \
  50. -p @l_prefix@/var/ntp/ntpd.pid \
  51. -f @l_prefix@/var/ntp/ntpd.drift \
  52. -s @l_prefix@/var/ntp/ntpd.stat/
  53. fi
  54. %stop -u @l_susr@
  55. rcService ntp enable yes || exit 0
  56. rcService ntp active no && exit 0
  57. ntp_signal TERM
  58. rm -f $ntp_pidfile 2>/dev/null || true
  59. %restart -p 200 -u @l_susr@
  60. rcService ntp enable yes || exit 0
  61. rcService ntp active no && exit 0
  62. rc ntp stop start
  63. %quarterly -u @l_susr@
  64. rcService ntp enable yes || exit 0
  65. [ ".$ntp_mode" = ".quarterly" ] && sleep 30 && ntp_once
  66. %hourly -u @l_susr@
  67. rcService ntp enable yes || exit 0
  68. [ ".$ntp_mode" = ".hourly" ] && sleep 30 && ntp_once
  69. %daily -u @l_susr@
  70. rcService ntp enable yes || exit 0
  71. [ ".$ntp_mode" = ".daily" ] && sleep 30 && ntp_once
  72. # rotate logfile
  73. shtool rotate -f \
  74. -n ${ntp_log_numfiles} -s ${ntp_log_minsize} -d \
  75. -z ${ntp_log_complevel} -m 644 -o @l_susr@ -g @l_mgrp@ \
  76. -P "${ntp_log_prolog}" \
  77. -E "${ntp_log_epilog} && rc ntp restart" \
  78. @l_prefix@/var/ntp/ntp.log
  79. %weekly -u @l_susr@
  80. rcService ntp enable yes || exit 0
  81. [ ".$ntp_mode" = ".weekly" ] && sleep 30 && ntp_once
  82. %monthly -u @l_susr@
  83. rcService ntp enable yes || exit 0
  84. [ ".$ntp_mode" = ".monthly" ] && sleep 30 && ntp_once