#!/bin/sh # chkconfig: 345 98 10 # description: The vservers service is used to start and stop all # the virtual servers. USR_SBIN=/usr/sbin USR_LIB_VSERVER=/usr/lib/vserver RUNLEVEL=`/sbin/runlevel | sed s'/^# //'` # Print the vserver name in priority/alpha order sortserver(){ ( cd /etc/vservers for serv in *.conf do PRIORITY=100 . /etc/vservers/$serv printf "%03d %s\n" $PRIORITY `basename $serv .conf` done ) | sort $* | (while read a b; do echo $b; done) } startservers(){ echo "Starting the virtual servers" cd /etc/vservers for name in `sortserver` do ONBOOT= eval `$USR_LIB_VSERVER/printconf.sh --quote $name` if [ "$ONBOOT" = "yes" ] ; then if [ "$BUILDFROM" != "" ];then # This is a synthetic vserver. We must assemble it if [ -d "$VSERVERDIR" -a ! -d "$VSERVERDIR/usr/lib" ];then # /usr/lib is missing. # It may be partially assembled after a reboot # (the mount -bind are missing, whatever) # so we may have to remove it first $USR_SBIN/vserver $name remove fi if [ ! -d "$VSERVERDIR" ];then $USR_SBIN/vserver $name assemble fi fi $USR_SBIN/vserver $name start else echo virtual server $name not configured for on boot start fi done } BACKGROUND=off if [ -f /etc/vservers.conf ] ; then . /etc/vservers.conf fi # See how we were called. case "$1" in start) if [ "$BACKGROUND" = "yes" ] ; then startservers >/dev/tty8 /dev/tty8 & else startservers fi touch /var/lock/subsys/vservers ;; stop) echo "Stopping the virtual servers" cd /etc/vservers for name in `sortserver -r` ; do $USR_SBIN/vserver $name stop if [ "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "6" ] ; then # In shutdown mode, we automatically remove the vservers. eval `$USR_LIB_VSERVER/printconf.sh --quote $name` if [ "$BUILDFROM" != "" ] ; then $USR_SBIN/vserver $name remove fi fi done rm -f /var/lock/subsys/vservers ;; restart) $0 stop $0 start ;; reload) echo Not implemented ;; force-reload) $0 stop $0 start ;; status) cd /etc/vservers for serv in *.conf do ONBOOT=no name=`basename $serv .conf` . /etc/vservers/$serv echo -n ONBOOT=$ONBOOT " " $USR_SBIN/vserver $name running done ;; *) echo "Usage: vservers {start|stop|restart|reload|status}" exit 1 esac exit 0