ClickHouse/tools/init.d/template
Michael Razuvaev 931e307835 Из ███████████ из reqreq викинул 2 демона,
init.d скрипт поправлен [#CONV-4914]
2012-05-29 13:58:33 +00:00

199 lines
3.2 KiB
Bash
Executable File

#! /bin/sh
### BEGIN INIT INFO
# Provides: @DAEMON@
# Default-Start: 2
# Default-Stop: 1
# Short-Description: Yandex daemon
### END INIT INFO
USER=metrika
GROUP=metrika
SHELL=/bin/sh
PROGRAM=@DAEMON@
SYSCONFDIR=/etc/$PROGRAM
PIDDIR=/var/run/$PROGRAM
LOGDIR=/var/log/$PROGRAM
LOCALSTATEDIR=/var/lock
BINDIR=/usr/bin
CRONFILE=/etc/cron.d/@CRONFILE@
CNFFILE=$SYSCONFDIR/config.xml
CONFFILE=$SYSCONFDIR/config.conf
CONFMERGEDFILE=$SYSCONFDIR/config-merged.conf
PIDFILE=$PIDDIR/$PROGRAM.pid
LOCKFILE=$LOCALSTATEDIR/$PROGRAM
RETVAL=0
isrun()
{
[ -r "$PIDFILE" ] && pgrep -s `cat "$PIDFILE"` >/dev/null 2>&1
}
wait4done()
{
while isrun; do
sleep 1
done
}
start()
{
[ -x $BINDIR/$PROGRAM ] || exit 0
local EXIT_STATUS
EXIT_STATUS=0
echo -n "Start $PROGRAM service: "
[ -f "$LOCKFILE" ] && sleep 1
if isrun; then
echo -n "already running "
EXIT_STATUS=1
else
# Clean stale lock files
rm -f "$PIDFILE" "$LOCKFILE"
mkdir -p $LOGDIR
mkdir -p $PIDDIR
chown -R $USER:$GROUP $LOGDIR
chown -R $USER:$GROUP $PIDDIR
if [ -f "$CONFFILE" ]; then
if [ -x /usr/local/bin/conf-merge.sh ]; then
/usr/local/bin/conf-merge.sh $CONFFILE $SYSCONFDIR/conf.d $CONFMERGEDFILE
else
echo "Warning: there is no /usr/local/bin/conf-merge.sh file" >&2
cp $CONFFILE $CONFMERGEDFILE
fi
/usr/local/bin/short2old.sh $CONFMERGEDFILE > $CNFFILE
[ $? -ne 0 ] && echo FAILED && exit 1
else
echo "Warinig: there is no $CONFFILE file; using $CNFFILE file." >&2
fi
su -l $USER -s $SHELL -c "\"$BINDIR/$PROGRAM\" --daemon --pid-file=\"$PIDFILE\" --config-file=\"$CNFFILE\""
EXIT_STATUS=$?
fi
if [ $EXIT_STATUS -eq 0 ]; then
touch "$LOCKFILE"
echo "DONE"
else
echo "FAILED"
fi
return $EXIT_STATUS
}
stop()
{
local EXIT_STATUS
EXIT_STATUS=0
echo -n "Stop $PROGRAM service: "
if isrun; then
if [ -f "$LOCKFILE" ]; then
kill -TERM `cat "$PIDFILE"`
wait4done
rm -f "$LOCKFILE"
else
echo "has been stopping already"
return 1
fi
else
rm -f "$LOCKFILE"
fi
echo "DONE"
return $EXIT_STATUS
}
restart()
{
stop
start
}
forcestop()
{
local EXIT_STATUS
EXIT_STATUS=0
echo -n "Stop $PROGRAM service: "
if isrun; then
if [ -f "$LOCKFILE" ]; then
rm -f "$LOCKFILE"
kill -9 `cat "$PIDFILE"`
wait4done
else
echo "has been stopping already"
return 1
fi
fi
echo "DONE"
return $EXIT_STATUS
}
forcerestart()
{
forcestop
start
}
enable_cron()
{
sed -i 's/^#*//' "$CRONFILE"
}
disable_cron()
{
sed -i 's/^#*/#/' "$CRONFILE"
}
# See how we were called.
EXIT_STATUS=0
case "$1" in
start)
start && enable_cron
;;
stop)
disable_cron && stop
;;
status)
isrun && echo "$PROGRAM service is running" || echo "$PROGRAM service is stopped"
;;
restart)
restart && enable_cron
;;
forcestop)
disable_cron && forcestop
;;
forcerestart)
forcerestart && enable_cron
;;
reload)
restart
;;
condstart)
isrun || start
;;
condstop)
isrun && stop
;;
condrestart)
isrun && restart
;;
condreload)
isrun && restart
;;
fallenstart)
[ -r "$PIDFILE" ] && start
;;
*)
echo "Usage: ${0##*/} {start|stop|status|restart|reload|condstart|condstop|condrestart|condreload|fallenstart}"
EXIT_STATUS=2
esac
exit $EXIT_STATUS