summaryrefslogtreecommitdiff
path: root/openntpd/ntpd
blob: 91d93721effa53ed6265c0d0a9548e723cf645de (plain)
    1 #!/bin/bash
    2 
    3 NAME=ntpd
    4 USER=root
    5 CONFIG=
    6 RUNDIR="/var/run/openntpd"
    7 PIDFILE="$RUNDIR/openntpd.pid"
    8 STARTCMD="/usr/sbin/ntpd -s -p $PIDFILE"
    9 STOPCMD=
   10 STOPTIMEOUT=120
   11 
   12 function getpid() {
   13 	if [ -z "$PIDFILE" ]; then
   14 		pid="$(pgrep -xfn "$STARTCMD")"
   15 	else
   16 		if [ -f "$PIDFILE" ]; then
   17 			pid=$(< $PIDFILE)
   18 			if [ ! -d /proc/"$pid" ]; then
   19 				echo "$NAME: removing stale pidfile $PIDFILE" >&2
   20 				rm -f "$PIDFILE"
   21 				unset pid
   22 			fi
   23 		fi
   24 	fi
   25 	echo "$pid"
   26 }
   27 
   28 case $1 in
   29 start)
   30 	pid=$(getpid)
   31 	install -d -m 755 -o $USER $RUNDIR || exit 1
   32 	if [ -n "$pid" ]; then
   33 		echo "$NAME already running with pid $pid" >&2
   34 		exit 1
   35 	fi
   36 	eval "$STARTCMD"
   37 	;;
   38 stop)
   39 	pid=$(getpid)
   40 	if [ -n "$pid" ]; then
   41 		if [ -n "$STOPCMD" ]; then
   42 			eval "$STOPCMD"
   43 		else
   44 			kill "$pid"
   45 		fi
   46 		t=$(printf '%(%s)T' -1)
   47 		tend=$((t+STOPTIMEOUT))
   48 		while [ -d /proc/$pid -a $t -lt $tend ]; do
   49 			sleep 0.5
   50 			t=$(printf '%(%s)T' -1)
   51 		done
   52 		if [ -d /proc/"$pid" ]; then
   53 			echo "$NAME still running with pid $pid" >&2
   54 		else
   55 			[ -n "$PIDFILE" ] && rm -f "$PIDFILE"
   56 		fi
   57 	else
   58 		echo "$NAME is not running" >&2
   59 	fi
   60 	;;
   61 restart)
   62 	$0 stop
   63 	$0 start
   64 	;;
   65 status)
   66 	pid=$(getpid)
   67 	if [ -n "$pid" ]; then
   68 		echo "$NAME is running with pid $pid"
   69 	else
   70 		echo "$NAME is not running"
   71 	fi
   72 	;;
   73 *)
   74 	echo "usage: $0 [start|stop|restart|status]"
   75 	;;
   76 esac

Generated by cgit