Home | History | Annotate | Line # | Download | only in rc
      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