summaryrefslogtreecommitdiff
path: root/bigsister.init
blob: 3a85ffa841b921074e0d56be63fb205841e38d00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/sh
#
# bigsister	Big Sister System and Network Monitor
#
# chkconfig:	345 98 99
# description:	Big Sister is System and Network Montoring system

# Source function library
. /etc/rc.d/init.d/functions

# Get network config
. /etc/sysconfig/network

# Get service config
[ -f /etc/sysconfig/bigsister ] && . /etc/sysconfig/bigsister

# Check that networking is up.
if is_yes "${NETWORKING}"; then
	if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
		# nls "ERROR: Networking is down. %s can't be run." <service>
		msg_network_down Big Sister
		exit 1
	fi
else
	exit 0
fi

bs_killproc() {		# kill the named process(es)
	msg_stopping "${4-$1}"
	pid=`ps -e -o pid,comm,args 2>/dev/null | grep -w perl 2>/dev/null | grep " $1 " 2>/dev/null | grep -v grep | awk '{ print $1 }'`
	if [ "$pid" != "" ]; then 
		kill $2 $pid && ok || fail
	else
		[ "$3" != "y" ] && ok || died
	fi
}


RETVAL=0
# See how we were called.
case "$1" in
  start)
	# Check if the service is already running?
	if [ ! -f /var/lock/subsys/bigsister ]; then
		if is_yes "$UXMON_ASROOT" ; then
			uxmonprefix="/bin/sh"
		else
			uxmonprefix="su - bs -s /bin/sh"
		fi
		umask 022
	  	if [ -f /usr/lib/bs/bin/bsmon -a -f /etc/bs/etc/bsmon.cfg ]; then
			msg_starting "Big Sister bsmon"
			$uxmonprefix -c "/usr/bin/setsid /usr/lib/bs/bin/bsmon" > /dev/null 2>&1
			RETVAL=$?
			[ "$RETVAL" -eq 0 ] && ok || ( fail ; exit $RETVAL )
		fi
		if [ -f /usr/lib/bs/bin/bbd -a -f /etc/bs/adm/bb-display.cfg ]; then
			msg_starting "Big Sister bbd"
			$uxmonprefix -c "/usr/bin/setsid /usr/lib/bs/bin/bbd -b /usr/lib/bs $BBD_ARGS" >/dev/null 2>&1
			RETVAL=$?
			[ "$RETVAL" -eq 0 ] && ok || ( fail ; exit $RETVAL )
		fi
		for f in /etc/bs/adm/uxmon-net* ; do
			set `basename $f`
			case $1 in
			  *bak|*%|*~|*.rpmsave|*.rpmorig|*.rpmnew)
				continue
				;;
			  *)
			  	msg_starting "Big Sister uxmon $1"
				$uxmonprefix -c "/usr/bin/setsid /usr/lib/bs/uxmon/uxmon -r /usr/lib/bs/uxmon/uxmon-rules.pl -b /usr/lib/bs -c $1" >/dev/null 2>&1
				RETVAL=$?
				[ "$RETVAL" -eq 0 ] && ok || ( fail ; exit $RETVAL )
				;;
			esac
		done
		if [ -f /etc/bs/adm/bstrapd.cfg ]; then
			# bstrapd will only run as root
			msg_starting "Big Sister bstrapd"
			/usr/bin/setsid /usr/lib/bs/bin/bstrapd >/dev/null 2>&1
			[ "$RETVAL" -eq 0 ] && ok || ( fail ; exit $RETVAL )
		fi
		touch /var/lock/subsys/bigsister
	else
		msg_already_running "Big Sister"
	fi
	;;
  stop)
	if [ -f /var/lock/subsys/bigsister ]; then
		bs_killproc uxmon -QUIT y "Big Sister uxmon"
		bs_killproc bbd -QUIT n "Big Sister bbd if running"
		bs_killproc bb_event_generator -QUIT n "Big Sister bb_event_generator if running"
		bs_killproc bsmon -QUIT n "Big Sister bsmon if running"
		bs_killproc bstrapd -QUIT n "Big Sister bstrapd if running"
		rm -f /var/lock/subsys/bigsister
	else
		msg_not_running "Big Sister"
	fi
	;;
  status)
	;;
  restart|force-reload)
  	$0 stop
	$0 start
	exit $?
	;;
  *)
	msg_usage "$0 {start|stop|restart|force-reload|status}"
	exit 3
esac

exit $RETVAL