#!/bin/bash # # /etc/rc.d/init.d/groonga # # chkconfig: - 80 20 # description: A full-text search engine and column store. # processname: groonga # config: /etc/sysconfig/groonga # pidfile: /var/run/groonga/groonga.pid # ### BEGIN INIT INFO # Provides: groonga # Default-Stop: 0 1 6 # Required-Start: $remote_fs # Required-Stop: $remote_fs # Short-Description: groonga's init script # Description: groonga is a full-text search engine and column store. ### END INIT INFO # Source function library. . /etc/init.d/functions name="groonga" prog="groonga" groonga=/usr/bin/$prog USER=groonga GROUP=groonga DATABASE=/var/lib/groonga/db/db ADDRESS=127.0.0.1 PIDFILE=/var/run/groonga/$prog.pid PROTOCOL=gqtp LOG_PATH=/var/log/groonga/groonga.log QUERY_LOG_PATH=/var/log/groonga/query.log OPTION_ARGS="" if [ -f /etc/sysconfig/$name ]; then . /etc/sysconfig/$name fi DAEMON_ARGS="" GROONGA_ARGS="-d" if [ -n "${USER}" ]; then if ! getent passwd | grep -q "^${USER}:"; then echo "$0: user for running $prog doesn't exist: ${USER}" >&2 exit 1 fi if [ -n "${PIDFILE}" ]; then mkdir -p `dirname ${PIDFILE}` chown -R ${USER} `dirname ${PIDFILE}` fi DAEMON_ARGS="${DAEMON_ARGS} --user ${USER}" fi if [ -n "${PIDFILE}" ]; then mkdir -p $(dirname ${PIDFILE}) if [ -n "${USER}" ]; then chown -R ${USER} $(dirname ${PIDFILE}) fi GROONGA_ARGS="${GROONGA_ARGS} --pid-path ${PIDFILE}" fi if [ -n "${ADDRESS}" ]; then GROONGA_ARGS="${GROONGA_ARGS} --address ${ADDRESS}" fi if [ -n "${LOG_PATH}" ]; then mkdir -p $(dirname ${LOG_PATH}) if [ -n "${USER}" ]; then chown -R ${USER} $(dirname ${LOG_PATH}) fi GROONGA_ARGS="${GROONGA_ARGS} --log-path ${LOG_PATH}" fi if [ -n "${QUERY_LOG_PATH}" ]; then mkdir -p $(dirname ${QUERY_LOG_PATH}) if [ -n "${USER}" ]; then chown -R ${USER} $(dirname ${QUERY_LOG_PATH}) fi GROONGA_ARGS="${GROONGA_ARGS} --query-log-path ${QUERY_LOG_PATH}" fi if [ -n "${PROTOCOL}" ]; then GROONGA_ARGS="${GROONGA_ARGS} --protocol ${PROTOCOL}" fi GROONGA_ARGS="${GROONGA_ARGS} ${OPTION_ARGS}" if [ -z "${DATABASE}" ]; then echo "$0: DATABASE should not be empty" >&2 exit 1 fi if [ -f "${DATABASE}" ]; then GROONGA_ARGS="${GROONGA_ARGS} ${DATABASE}" else mkdir -p $(dirname ${DATABASE}) if [ -n "${USER}" ]; then chown -R ${USER} $(dirname ${DATABASE}) fi if [ -n "${GROUP}" ]; then chgrp -R ${GROUP} $(dirname ${DATABASE}) fi GROONGA_ARGS="${GROONGA_ARGS} -n ${DATABASE}" fi RETVAL=0 start() { echo -n "Starting $name: " daemon $DAEMON_ARGS $groonga "$GROONGA_ARGS" RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog return $RETVAL } stop() { echo -n "Shutting down $name: " killproc $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog return $RETVAL } restart() { stop start } status() { ARGS="" if [ -n "${PROTOCOL}" ]; then ARGS="${ARGS} --protocol ${PROTOCOL}" fi $groonga $ARGS -c $ADDRESS status } case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) killproc $groonga -HUP ;; condrestart) [ -f /var/lock/subsys/$prog ] && restart || : ;; status) status ;; *) echo "Usage: $prog {start|stop|reload|restart|condrestart|status}" exit 1 ;; esac exit $?