blob: dabcd583ea1eb370b9cfaad8da8b0f1def2eece9 [file] [log] [blame] [edit]
#!/bin/bash
#
# start -- start up configured conmux servers on this host.
#
# (C) Copyright IBM Corp. 2004, 2005, 2006
# Author: Andy Whitcroft <andyw@uk.ibm.com>
#
# The Console Multiplexor is released under the GNU Public License V2
#
if [ -f ~/.gmm.conf ]; then
. ~/.gmm.conf
fi
CONMUX=${CONMUX:-/usr/local/conmux}
cmd="start"
if [ "$1" != "" ]; then
cmd="$1"
fi
PATH=$CONMUX/bin:$CONMUX/sbin:$CONMUX/lib/drivers:$CONMUX/lib/helpers:$PATH
function start() {
typeset name="$1"
typeset pf="$CONMUX/log/$name.pid"
shift
# Determine whether it is already running ... if so leave it be.
if [ -f "$pf" ]; then
if kill -0 `cat "$pf"` 2>/dev/null; then
return 1
fi
fi
echo "starting $name ..."
"$@" >"$CONMUX/log/$name.log" 2>&1 &
echo "$!" >"$pf"
return 0
}
function stop() {
typeset name="$1"
typeset pf="$CONMUX/log/$name.pid"
echo "stopping $name ..."
# Kill it and clear up
kill -HUP `cat "$pf"` 2>/dev/null
rm -f "$pf"
}
existing=""
for i in $CONMUX/log/*.pid
do
n=${i%.pid}
n=${n#$CONMUX/log/}
if [ "$n" != "*" ]; then
existing="$existing $n"
fi
done
if [ "$cmd" = "start" ]; then
autoboot=""
[ -f $CONMUX/etc/registry ] || touch $CONMUX/etc/registry
start registry $CONMUX/sbin/conmux-registry 63000 $CONMUX/etc/registry
if [ "$?" -eq 0 ]; then
sleep 1
fi
started="registry"
pause=0
for i in $CONMUX/etc/*.cf
do
n=${i%.cf}
n=${n#$CONMUX/etc/}
if [ "$n" != "*" ]; then
if [ -f "$CONMUX/log/$n.cf" ]; then
if ! cmp -s "$i" "$CONMUX/log/$n.cf"; then
stop $n
fi
fi
start $n $CONMUX/sbin/conmux $i
if [ "$?" -eq 0 ]; then
pause=1
fi
started="$started $n"
# Preserve the orginal configuration file.
cp "$i" "$CONMUX/log/$n.cf"
if grep -q TYPE:numaq "$i"; then
autoboot="$autoboot $n"
fi
for i in `grep FLAGS: "$i"`; do
case "$i" in
\#|FLAGS:) ;;
*) autoboot="$autoboot $n/$i" ;;
esac
done
fi
done
if [ "$pause" -eq 1 ]; then
sleep 1
fi
for nh in $autoboot
do
name="${nh%/*}"
helper="${nh#*/}"
mn="${name#abat-}"
start $name-$helper-helper $CONMUX/bin/conmux-attach $mn $helper-helper
started="$started $name-$helper-helper"
done
fi
if [ "$cmd" = "start" -o "$cmd" = "stop" ]; then
for i in $existing
do
case " $started " in
*\ $i\ *) ;;
*) stop "$i" ;;
esac
done
fi
if [ "$cmd" = "status" ]; then
for n in $existing
do
mn="${n#abat-}"
case "$n" in
registry|*-helper)
;;
*)
status=`console -s $mn`
echo "$mn $status"
esac
done
fi