#!/bin/bash # # $Id$ # $URL$ # # vinit - trigger the slice-local initscript as installed in /etc/rc.d/vinit.slice # # this is unconditionnally installed and activated in the sliver # but of course nothing is run if the script is not present # # note - for practical reasons this is *not* activated through chkconfig # as the slice has not yet started at that point # # historical note # historically planetlab initscripts have not been required to handle the 'stop' method # so installing such a script directly as /etc/rc.d/vinit would result in the # script .. being run a second time at vserver-stop time # Source function library. . /etc/init.d/functions slicescript=/etc/rc.d/init.d/vinit.slice basename=$(basename $slicescript) slicename=$(cat /etc/slicename) prog="Slice initscript ${basename}@${slicename}" lockfile=/var/lock/subsys/vinit RETVAL=0 # xxx todo - redirect all stdout, stderr to /var/log/vinit for user access function start() { if [ ! -x $slicescript ] ; then echo "vinit@$slicename: no executable $slicescript - ignored" return 0 fi echo $"Starting $prog" $slicescript start $slicename >& /var/log/vinit & touch ${lockfile} return 0 } # the initial model came without a stop function; legacy ... function stop() { echo $"Stopping $prog " killproc $basename rm -f ${lockfile} } function status () { if [ -f ${lockfile} ] ; then echo "$prog seems to have run" return 0 else echo "$prog apparently hasn't run" return 1 fi } case "$1" in start) start RETVAL=$? ;; stop) stop RETVAL=$? ;; status) status RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|status}" exit 1 ;; esac exit $RETVAL