1*8585484eSchristos#!/bin/sh 2*8585484eSchristos 3*8585484eSchristosNTPD=/usr/sbin/ntpd 4*8585484eSchristosPIDFILE=/var/run/ntpd.pid 5*8585484eSchristosUSER=ntp 6*8585484eSchristosGROUP=ntp 7*8585484eSchristosNTPD_OPTS="-g -u $USER:$GROUP -p $PIDFILE" 8*8585484eSchristos 9*8585484eSchristosntpd_start() { 10*8585484eSchristos if [ -r $PIDFILE ]; then 11*8585484eSchristos echo "ntpd seems to be already running under pid `cat $PIDFILE`." 12*8585484eSchristos echo "Delete $PIDFILE if this is not the case."; 13*8585484eSchristos return 1; 14*8585484eSchristos fi 15*8585484eSchristos echo -n "Starting NTP daemon... " 16*8585484eSchristos 17*8585484eSchristos $NTPD $NTPD_OPTS 18*8585484eSchristos 19*8585484eSchristos # You can't always rely on the ntpd exit code, see Bug #2420 20*8585484eSchristos # case "$?" in 21*8585484eSchristos # 0) echo "OK!" 22*8585484eSchristos # return 0;; 23*8585484eSchristos # *) echo "FAILED!" 24*8585484eSchristos # return 1;; 25*8585484eSchristos # esac 26*8585484eSchristos 27*8585484eSchristos sleep 1 28*8585484eSchristos 29*8585484eSchristos if ps -Ao args|grep -q "^$NTPD $NTPD_OPTS"; then 30*8585484eSchristos echo "OK!" 31*8585484eSchristos return 0 32*8585484eSchristos else 33*8585484eSchristos echo "FAILED!" 34*8585484eSchristos [ -e $PIDFILE ] && rm $PIDFILE 35*8585484eSchristos return 1 36*8585484eSchristos fi 37*8585484eSchristos} 38*8585484eSchristos 39*8585484eSchristosntpd_stop() { 40*8585484eSchristos if [ ! -r $PIDFILE ]; then 41*8585484eSchristos echo "ntpd doesn't seem to be running, cannot read the pid file." 42*8585484eSchristos return 1; 43*8585484eSchristos fi 44*8585484eSchristos echo -n "Stopping NTP daemon..."; 45*8585484eSchristos PID=`cat $PIDFILE` 46*8585484eSchristos 47*8585484eSchristos if kill -TERM $PID 2> /dev/null;then 48*8585484eSchristos # Give ntp 15 seconds to exit 49*8585484eSchristos for i in `seq 1 15`; do 50*8585484eSchristos if [ -n "`ps -p $PID|grep -v PID`" ]; then 51*8585484eSchristos echo -n . 52*8585484eSchristos sleep 1 53*8585484eSchristos else 54*8585484eSchristos echo " OK!" 55*8585484eSchristos rm $PIDFILE 56*8585484eSchristos return 0 57*8585484eSchristos fi 58*8585484eSchristos done 59*8585484eSchristos fi 60*8585484eSchristos 61*8585484eSchristos echo " FAILED! ntpd is still running"; 62*8585484eSchristos return 1 63*8585484eSchristos} 64*8585484eSchristos 65*8585484eSchristosntpd_status() { 66*8585484eSchristos if [ -r $PIDFILE ]; then 67*8585484eSchristos echo "NTP daemon is running as `cat $PIDFILE`" 68*8585484eSchristos else 69*8585484eSchristos echo "NTP daemon is not running" 70*8585484eSchristos fi 71*8585484eSchristos} 72*8585484eSchristos 73*8585484eSchristoscase "$1" in 74*8585484eSchristos 'start') 75*8585484eSchristos ntpd_start 76*8585484eSchristos ;; 77*8585484eSchristos 'stop') 78*8585484eSchristos ntpd_stop 79*8585484eSchristos ;; 80*8585484eSchristos 'restart') 81*8585484eSchristos ntpd_stop && ntpd_start 82*8585484eSchristos ;; 83*8585484eSchristos 'status') 84*8585484eSchristos ntpd_status 85*8585484eSchristos ;; 86*8585484eSchristos *) 87*8585484eSchristos echo "Usage: $0 (start|stop|restart|status)" 88*8585484eSchristosesac 89