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