rc.ntp 2.8 KB

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