Skip to content

Instantly share code, notes, and snippets.

@yunnysunny
Last active November 30, 2022 02:28
Show Gist options
  • Save yunnysunny/b952157bb93d741256933829c9562201 to your computer and use it in GitHub Desktop.
Save yunnysunny/b952157bb93d741256933829c9562201 to your computer and use it in GitHub Desktop.
Coredns service daemon script, rename it to croedns , and move to /etc/init.d
#! /bin/bash
# /etc/init.d/coredns: start the coredns daemon.
# description: coredns
CORE_DNS_HOME=/usr/local/bin
CORE_DNS_BIN=$CORE_DNS_HOME/coredns
CORE_DNS_PIDFILE=/var/run/coredns.pid
CORE_DNS_CONSOLE_DIR=/tmp
CORE_DNS_CONSOLE_LOG=${CORE_DNS_CONSOLE_DIR}/coredns.log
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
prog=coredns
DESC="coredns daemon"
RETVAL=0
STARTUP_WAIT=30
SHUTDOWN_WAIT=30
mkdir -p $(dirname $CORE_DNS_PIDFILE)
# Source function library.
. /lib/lsb/init-functions
DATE=$(date '+%Y-%m-%d %H:%M:%S')
start() {
echo -n $"${DATE} Starting $prog: "
# Create pid file
if [ -f $CORE_DNS_PIDFILE ]; then
read ppid < $CORE_DNS_PIDFILE
if [ $(ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null) -eq '1' ]; then
echo -n "$prog is already running"
log_failure_msg "[failure]"
echo
return 1
else
rm -f $CORE_DNS_PIDFILE
fi
fi
# Run daemon
cd $CORE_DNS_HOME
nohup $CORE_DNS_BIN -conf $CORE_DNS_HOM/Corefile > $CORE_DNS_CONSOLE_LOG 2>&1 &
echo $! > $CORE_DNS_PIDFILE
count=0
launched=false
sleep 1
until [ $count -gt $STARTUP_WAIT ]
do
read ppid < $CORE_DNS_PIDFILE
if [ $(ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null) -eq '1' ] ; then
launched=true
break
fi
sleep 1
let count=$count+1;
done
if [ $launched = 'true' ] ; then
log_success_msg "[OK]"
else
log_failure_msg "[failure]"
fi
echo
return 0
}
stop() {
echo -n $"${DATE} Stopping $prog: "
read ppid < $CORE_DNS_PIDFILE
kill -9 $ppid
if [ $(ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null) -eq '1' ] ; then
log_failure_msg "[failure]"
else
rm -rf $CORE_DNS_PIDFILE
log_success_msg "[OK]"
fi
echo
}
reload() {
stop
start
}
restart() {
stop
start
}
status() {
if [ -f $CORE_DNS_PIDFILE ]; then
read ppid < $CORE_DNS_PIDFILE
if [ $(ps --pid $ppid 2> /dev/null | grep -c $ppid 2> /dev/null) -eq '1' ]; then
echo "$prog is running (pid $ppid)"
return 0
else
echo "$prog dead but pid file exists"
return 1
fi
fi
echo "$prog is not running"
return 3
}
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|reload|restart|status}"
exit 1
esac
exit $?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment