#!/bin/bash # Authors: # Andrew Beekhof <abeekhof@redhat.com> # Fabio M. Di Nitto <fdinitto@redhat.com> # # License: Revised BSD # chkconfig: - 20 20 # description: OpenAIS # processname: corosync # ### BEGIN INIT INFO # Provides: openais # Required-Start: $network # Should-Start: $syslog # Required-Stop: $network # Default-Start: # Default-Stop: # Short-Description: Starts and stops OpenAIS. # Description: Starts and stops OpenAIS. ### END INIT INFO desc="OpenAIS" prog="openais" exec="aisexec" proc="corosync" # set secure PATH PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/sbin" success() { gprintf "[ OK ]\r\n" } failure() { gprintf "[FAILED]\r\n" } status() { pid=$(pidof $1 2>/dev/null) rtrn=$? if [ $rtrn -ne 0 ]; then gprintf "%s is stopped\n" "$1" else gprintf "%s (pid %s) is running...\n" "$1" "$pid" fi return $rtrn } # rpm based distros if [ -d /etc/sysconfig ]; then [ -f /etc/init.d/functions ] && . /etc/init.d/functions [ -f /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog [ -z "$LOCK_FILE" ] && LOCK_FILE="/var/lock/subsys/$prog" fi # deb based distros if [ -d /etc/default ]; then [ -f /etc/default/$prog ] && . /etc/default/$prog [ -z "$LOCK_FILE" ] && LOCK_FILE="/var/lock/$prog" fi start() { gprintf "Starting %s (%s): " "$desc" "$exec" # most recent distributions use tmpfs for /var/run # to avoid to clean it up on every boot. # they also assume that init scripts will create # required subdirectories for proper operations mkdir -p /var/run if status $proc > /dev/null 2>&1; then success else $exec > /dev/null 2>&1 # give it time to fail sleep 2 if status $proc > /dev/null 2>&1; then touch $LOCK_FILE pidof $proc > /var/run/$prog.pid success else failure rtrn=1 fi fi echo } stop() { ! status $proc > /dev/null 2>&1 && return gprintf "Signaling %s (%s) to terminate: " "$desc" "$prog" kill -TERM $(pidof $proc) > /dev/null 2>&1 success echo gprintf "Waiting for %s services to unload:" "$prog" while status $proc > /dev/null 2>&1; do sleep 1 gprintf "." done rm -f $LOCK_FILE rm -f /var/run/$prog.pid success echo } restart() { stop start } rtrn=0 case "$1" in start) start ;; restart|reload|force-reload) restart ;; condrestart|try-restart) if status $prog > /dev/null 2>&1; then restart fi ;; status) status $prog rtrn=$? ;; stop) stop ;; *) gprintf "usage: %s {start|stop|restart|reload|force-reload|condrestart|try-restart|status}\n" "$0" rtrn=2 ;; esac exit $rtrn