Source

iredapd / rc_scripts / iredapd.freebsd

#!/usr/local/bin/bash

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

# PROVIDE: iredapd
# REQUIRE: DAEMON
# KEYWORD: shutdown

. /etc/rc.subr
name='iredapd'
rcvar=`set_rcvar`

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 "${name} is already running."
        else
            rm -f ${pidfile} >/dev/null 2>&1
        fi
    fi

    echo "Starting ${name} ..."
    /usr/local/bin/python ${BINPATH}
    unset s
}

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

        if [ X"$s" == X"running" ]; then
            echo "Stopping ${name} ..."
            kill -9 ${PID}
            if [ X"$?" == X"0" ]; then
                rm -f ${pidfile} >/dev/null 2>&1
            else
                echo -e "\t\t[ FAILED ]"
            fi
        else
            echo "${name} is already stopped."
            rm -f ${pidfile} >/dev/null 2>&1
        fi
    else
        echo "${name} 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 "${name} is running."
            exit 0
        else
            echo "${name} is stopped."
            exit 1
        fi
    else
        echo "${name} is stopped."
        exit 3
    fi
}

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

start_cmd="start"
stop_cmd="stop"
status_cmd="status"
restart_cmd="stop && start"

command="start"
load_rc_config ${name}
run_rc_command "$1"
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.