#!/bin/sh # # opensm Manage OpenSM # # chkconfig: 2345 95 91 # # description: Manage OpenSM # ### BEGIN INIT INFO # Provides: opensm # Required-Start: $syslog # Default-Start: none # Default-Stop: 0 1 6 # Description: Manage OpenSM ### END INIT INFO # # Do not load RH compatibility interface. WITHOUT_RC_COMPAT=1 # Source function library . /etc/rc.d/init.d/functions DAEMON=/usr/sbin/opensm DISPNAME=OpenSM LOCKFILE=/var/lock/subsys/opensm RETVAL=0 SourceIfNotEmpty /etc/sysconfig/opensm start() { local FLAGS="--start --background --exec $DAEMON" echo "$OSM_HOSTS"|fgrep -wqs "$(hostname)" || return 0 if ! start-stop-daemon $FLAGS --test >/dev/null;then msg_already_running "$DISPNAME" passed "$DAEMON startup" RETVAL=$? echo return $RETVAL fi msg_starting "$DISPNAME" start-stop-daemon $FLAGS -- $OSM_ARGS RETVAL=$? if [ $RETVAL = 0 ]; then touch "$LOCKFILE" success "$DAEMON startup" else failure "$DAEMON startup" fi echo return $RETVAL } do_status() { local FLAGS="--stop --exec $DAEMON" if start-stop-daemon $FLAGS --test >/dev/null;then echo "$DISPNAME is running" return 0; fi if [ -f "$LOCKFILE" ];then echo "$DISPNAME is dead, but subsystem is locked" return 2; fi echo "$DISPNAME is stopped" return 3; } do_stop() { local SIGNAL="$1";shift local FLAGS="--stop --exec $DAEMON" if ! start-stop-daemon $FLAGS --test >/dev/null;then msg_not_running "$DISPNAME" passed "$DAEMON stop" RETVAL=$? echo return $RETVAL fi start-stop-daemon $FLAGS --signal "$SIGNAL" RETVAL=$? if [ $RETVAL = 0 ];then success "$MESSAGE" if ! [ $SIGNAL = "$(kill -l HUP)" ]; then rm -f "$LOCKFILE" usleep 100000 start-stop-daemon $FLAGS --signal "$(kill -l KILL)" >/dev/null fi else failure "$MESSAGE" fi echo return $RETVAL } stop() { msg_stopping "$DISPNAME" do_stop "$(kill -l TERM)" RETVAL=$? return $RETVAL } reload() { msg_reloading "$DISPNAME" do_stop "$(kill -l HUP)" RETVAL=$? return $RETVAL } restart() { stop start } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) restart ;; reload) reload ;; condstop) if [ -e "$LOCKFILE" ]; then stop fi ;; condrestart) if [ -e "$LOCKFILE" ]; then restart fi ;; condreload) if [ -e "$LOCKFILE" ];then reload fi ;; status) do_status ;; *) msg_usage "${0##*/} {start|stop|restart|reload|condrestart|condreload|status}" RETVAL=1 esac exit $RETVAL