-#!/bin/sh
-# chkconfig: 345 99 01
-# description: The vservers service is used to start and stop all
-# the virtual servers.
-
-USR_SBIN=/usr/sbin
-VROOTDIR=/vservers
-
-# Print the vserver name in priority/alpha order
-sortserver(){
- (
- cd /etc/vservers
- for serv in *.conf ; do
- # XXX - why is this check necessary?
- test -f "$serv" || continue
- PRIORITY=100
- . $serv
- echo $PRIORITY `basename $serv .conf`
- done
- ) | sort -n $* | cut -d ' ' -f 2
-}
-
-startservers(){
- echo "Starting the virtual servers"
- cd /etc/vservers
- for name in $*; do
- if ! test -f "$name.conf" ; then
- echo No configuration for this vserver: /etc/vservers/$name.conf
- continue
- fi
- ONBOOT=
- BACKGROUND=no
- if [ -f /etc/vservers.conf ] ; then
- . /etc/vservers.conf
- fi
- . $name.conf
- if [ "$ONBOOT" = "yes" ] ; then
- mkdir -p $VROOTDIR/$name/var/log
- if [ "$BACKGROUND" = "yes" ] ; then
- nohup setsid $USR_SBIN/vserver $name start >$VROOTDIR/$name/var/log/boot.log 2>&1 </dev/null &
- sleep 1
- else
- $USR_SBIN/vserver $name start 2>&1 </dev/null | tee $VROOTDIR/$name/var/log/boot.log
- fi
- fi
- done
-}
-
-# See how we were called.
-case "$1" in
- start)
- # do nothing unless passed a vserver name - 'start all' functionality
- # subsumed by Node Manager
- if [ -z "$2" ]; then
- touch /var/lock/subsys/vservers
- else
- startservers $2
- fi
- ;;
- stop)
- shift
- echo "Stopping the virtual servers"
- cd /etc/vservers
- for name in ${*:-`sortserver -r`} ; do
- chcontext --ctx `id -u $name` /usr/lib/util-vserver/vserverkillall
- umount $VROOTDIR/$name/proc
- umount $VROOTDIR/$name/dev/pts
- done
- rm -f /var/lock/subsys/vservers
- ;;
- restart|force-reload)
- shift
- $0 stop $*
- $0 start $*
- ;;
- reload)
- echo Not implemented
- ;;
- status)
- cd /etc/vservers
- for serv in *.conf ; do
- ONBOOT=no
- name=`basename $serv .conf`
- . $serv
- echo -n ONBOOT=$ONBOOT " "
- $USR_SBIN/vserver $name running
- done
- ;;
- *)
- echo "Usage: vservers {start|stop|restart|reload|status}"
- exit 1
-esac