| #! /bin/sh |
| # init fragment for cancd |
| # |
| # chkconfig: 2345 29 20 |
| # description: Start cancd at system boot |
| # |
| ### BEGIN INIT INFO |
| # Provides: cancd |
| # Required-Start: network |
| # Should-Start: |
| # Required-Stop: |
| # Default-Start: 2 3 5 |
| # Default-Stop: |
| # Description: start cancd driver at system boot |
| ### END INIT INFO |
| |
| |
| # Force LC_ALL=C |
| export LC_ALL=C |
| |
| if [ -f /etc/redhat-release ] |
| then |
| . /etc/init.d/functions |
| |
| init_status() |
| { |
| return 0 |
| } |
| |
| success_status() |
| { |
| success |
| echo |
| } |
| |
| failure_status() |
| { |
| failure $1 |
| echo |
| } |
| |
| exit_status() |
| { |
| exit $? |
| } |
| elif [ -f /etc/SuSE-release -o -f /etc/UnitedLinux-release ] |
| then |
| . /etc/rc.status |
| |
| init_status() |
| { |
| rc_reset |
| } |
| |
| success_status() |
| { |
| /bin/true |
| rc_status -v |
| } |
| |
| failure_status() |
| { |
| /bin/false |
| rc_status -v |
| } |
| |
| exit_status() |
| { |
| rc_exit |
| } |
| else |
| init_status() |
| { |
| return 0 |
| } |
| |
| success_status() |
| { |
| echo "OK" |
| return 0 |
| } |
| |
| failure_status() |
| { |
| echo "Failed" |
| return 0 |
| } |
| |
| exit_status() |
| { |
| exit $? |
| } |
| fi |
| |
| # Source configuration |
| [ -f /etc/sysconfig/cancd ] && . /etc/sysconfig/cancd |
| |
| init_status |
| |
| |
| # |
| # if_fail() |
| # |
| # Evaluates return codes. If 0, prints "OK", if 1, prints "Failed" |
| # and exits. If 2, status is "already done" and nothing is printed. |
| # The rest of the functions in here all honor this convention. |
| # |
| if_fail() |
| { |
| RC="$1" |
| REASON="$2" |
| if [ "$RC" = "0" ] |
| then |
| success_status |
| return |
| elif [ "$RC" = "2" ] |
| then |
| return |
| fi |
| failure_status ${REASON} |
| exit 1 |
| } |
| |
| find_running() |
| { |
| ps -ef | awk '/awk/{next}/\/usr\/sbin\/cancd/{print $2}' |
| } |
| |
| start() |
| { |
| OPT_PORT= |
| if [ -n "$CANCD_PORT" ] |
| then |
| OPT_PORT="-p ${CANCD_PORT}" |
| fi |
| OPT_PATH= |
| if [ -n "$CANCD_PATH" ] |
| then |
| OPT_PATH="-l ${CANCD_PATH}" |
| fi |
| |
| echo -n "Starting cancd server: " |
| OUTPUT="`find_running 2>/dev/null`" |
| if [ -z "$OUTPUT" ] |
| then |
| if [ -n "$CANCD_USER" ] |
| then |
| su - "$CANCD_USER" -c "/usr/sbin/cancd $OPT_PORT $OPT_PATH" |
| else |
| /usr/sbin/cancd $OPT_PORT $OPT_PATH |
| fi |
| if_fail $? "Unable to start cancd" |
| else |
| if_fail 0 "Already running" |
| fi |
| } |
| |
| stop() |
| { |
| echo -n "Stopping cancd: " |
| OUTPUT="`find_running 2>/dev/null`" |
| if [ -z "$OUTPUT" ] |
| then |
| if_fail 0 "Not running" |
| else |
| kill $OUTPUT |
| if_fail $? "Unable to kill cancd" |
| fi |
| } |
| |
| status() |
| { |
| OUTPUT="`find_running 2>/dev/null`" |
| if [ -n "$OUTPUT" ] |
| then |
| echo "cancd is running" |
| else |
| echo "cancd is not running" |
| fi |
| } |
| |
| case "$1" in |
| start) |
| start |
| ;; |
| |
| status) |
| status |
| ;; |
| |
| stop) |
| stop |
| ;; |
| |
| restart) |
| stop |
| start |
| ;; |
| |
| *) |
| echo "Usage: $0 {start|stop|restart|status}" |
| exit 1 |
| esac |
| |
| exit 0 |
| |