1275970Scy#!/bin/sh
2275970Scy
3275970ScyNTPD=/usr/sbin/ntpd
4275970ScyPIDFILE=/var/run/ntpd.pid
5275970ScyUSER=ntp
6275970ScyGROUP=ntp
7275970ScyNTPD_OPTS="-g -u $USER:$GROUP -p $PIDFILE"
8275970Scy
9275970Scyntpd_start() {
10275970Scy    if [ -r $PIDFILE ]; then
11275970Scy        echo "ntpd seems to be already running under pid `cat $PIDFILE`."
12275970Scy        echo "Delete $PIDFILE if this is not the case.";
13275970Scy        return 1;
14275970Scy    fi
15275970Scy    echo -n "Starting NTP daemon... "
16275970Scy
17275970Scy    $NTPD $NTPD_OPTS
18275970Scy
19275970Scy    # You can't always rely on the ntpd exit code, see Bug #2420
20275970Scy    # case "$?" in
21275970Scy    #     0) echo "OK!"
22275970Scy    #         return 0;;
23275970Scy    #     *) echo "FAILED!"
24275970Scy    #         return 1;;
25275970Scy    # esac
26275970Scy
27275970Scy    sleep 1
28275970Scy
29275970Scy    if ps -Ao args|grep -q "^$NTPD $NTPD_OPTS"; then
30275970Scy        echo "OK!"
31275970Scy        return 0
32275970Scy    else
33275970Scy        echo "FAILED!"
34275970Scy        [ -e $PIDFILE ] && rm $PIDFILE
35275970Scy        return 1
36275970Scy    fi
37275970Scy}
38275970Scy
39275970Scyntpd_stop() {
40275970Scy    if [ ! -r $PIDFILE ]; then
41275970Scy        echo "ntpd doesn't seem to be running, cannot read the pid file."
42275970Scy        return 1;
43275970Scy    fi
44275970Scy    echo -n "Stopping NTP daemon...";
45275970Scy    PID=`cat $PIDFILE`
46275970Scy
47275970Scy    if kill -TERM $PID 2> /dev/null;then
48275970Scy        # Give ntp 15 seconds to exit
49275970Scy        for i in `seq 1 15`; do
50275970Scy            if [ -n "`ps -p $PID|grep -v PID`" ]; then
51275970Scy                echo -n .
52275970Scy                sleep 1
53275970Scy            else
54275970Scy                echo " OK!"
55275970Scy                rm $PIDFILE
56275970Scy                return 0
57275970Scy            fi
58275970Scy        done
59275970Scy    fi
60275970Scy
61275970Scy    echo " FAILED! ntpd is still running";
62275970Scy    return 1
63275970Scy}
64275970Scy
65275970Scyntpd_status() {
66275970Scy    if [ -r $PIDFILE ]; then
67275970Scy        echo "NTP daemon is running as `cat $PIDFILE`"
68275970Scy    else
69275970Scy        echo "NTP daemon is not running"
70275970Scy    fi
71275970Scy}
72275970Scy
73275970Scycase "$1" in
74275970Scy    'start')
75275970Scy        ntpd_start
76275970Scy        ;;
77275970Scy    'stop')
78275970Scy        ntpd_stop
79275970Scy        ;;
80275970Scy    'restart')
81275970Scy        ntpd_stop && ntpd_start
82275970Scy        ;;
83275970Scy    'status')
84275970Scy        ntpd_status
85275970Scy        ;;
86275970Scy    *)
87275970Scy        echo "Usage: $0 (start|stop|restart|status)"
88275970Scyesac
89