Source

iredapd / rc_scripts / iredapd.rhel

Zhang Huangbin 83b2619 










Zhang Huangbin e85694f 
Zhang Huangbin 83b2619 























Zhang Huangbin ec166c5 


Zhang Huangbin 83b2619 
































Zhang Huangbin ff8a66f 
Zhang Huangbin 83b2619 

Zhang Huangbin ff8a66f 
Zhang Huangbin 83b2619 


Zhang Huangbin ff8a66f 
Zhang Huangbin 83b2619 






Zhang Huangbin e746e96 
Zhang Huangbin 83b2619 



#!/usr/bin/env bash

# Author: Zhang Huangbin (zhb@iredmail.org)

### BEGIN INIT INFO
# chkconfig: - 99 99
# description: iredapd is a mail list access policy daemon.
# processname: iredapd
### END INIT INFO

PROG='iredapd'
BINPATH='/opt/iredapd/iredapd.py'
PIDFILE='/var/run/iredapd.pid'

check_status() {
    # Usage: check_status pid_number
    PID="${1}"
    l=$(ps -p ${PID} | wc -l | awk '{print $1}')
    if [ X"$l" == X"2" ]; then
        echo "running"
    else
        echo "stopped"
    fi
}

start() {
    if [ -f ${PIDFILE} ]; then
        PID="$(cat ${PIDFILE})"
        s="$(check_status ${PID})"

        if [ X"$s" == X"running" ]; then
            echo "${PROG} is already running."
        else
            rm -f ${PIDFILE} >/dev/null 2>&1
        fi
    fi

    echo "Starting ${PROG} ..."
    python ${BINPATH}
    unset s
}

stop() {
    if [ -f ${PIDFILE} ]; then
        PID="$(cat ${PIDFILE})"
        s="$(check_status ${PID})"

        if [ X"$s" == X"running" ]; then
            echo "Stopping ${PROG} ..."
            kill -9 ${PID}
            if [ X"$?" == X"0" ]; then
                rm -f ${PIDFILE} >/dev/null 2>&1
            else
                echo -e "\t\t[ FAILED ]"
            fi
        else
            echo "${PROG} is already stopped."
            rm -f ${PIDFILE} >/dev/null 2>&1
        fi
    else
        echo "${PROG} is already stopped."
    fi
    unset s
}

status() {
    if [ -f ${PIDFILE} ]; then
        PID="$(cat ${PIDFILE})"
        s="$(check_status ${PID})"

        if [ X"$s" == X"running" ]; then
            echo "${PROG} is running."
            exit 0
        else
            echo "${PROG} is stopped."
            exit 1
        fi
    else
        echo "${PROG} is stopped."
        exit 3
    fi
}

case "$1" in
    start) start ;;
    stop) stop ;;
    status) status ;;
    restart) stop && sleep 1 && start ;;
    *)
        echo $"Usage: $0 {start|stop|restart|status}"
        RETVAL=1
        ;;
esac