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