X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sysv%2Fvservers.subst;h=acaced0035c285283fcaf9c1354b853b6da6d865;hb=f75fc6f79ff81fbf8b6dc82d993e6e6d174598ce;hp=d33ec2c9d3b95511eea5c2510896167c8eece1f2;hpb=1f96d24ee10b517d190a79c8392dd3231c8b31ae;p=util-vserver.git diff --git a/sysv/vservers.subst b/sysv/vservers.subst index d33ec2c..acaced0 100755 --- a/sysv/vservers.subst +++ b/sysv/vservers.subst @@ -1,97 +1,92 @@ #!/bin/sh -# chkconfig: 345 98 10 +# 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 - test -f "$serv" || continue - - PRIORITY=100 - . $serv - printf "%03d %s\n" $PRIORITY `basename $serv .conf` - done - ) | sort $* | (while read a b; do echo $b; done) + ( + 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 ${*:-`sortserver`} - do - if ! test -f "$name.conf" ; then - echo No configuration for this vserver: /etc/vservers/$name.conf - continue - fi - ONBOOT= - . $name.conf - if [ "$ONBOOT" = "yes" ] ; then - $USR_SBIN/vserver $name start - else - echo virtual server $name not configured for on boot start - fi - done + 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 &1 /dev/tty8 /dev/tty8 & + # 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 $* + startservers $2 fi - touch /var/lock/subsys/vservers ;; stop) shift echo "Stopping the virtual servers" cd /etc/vservers - for name in ${*:-`sortserver -r`} - do - $USR_SBIN/vserver $name stop + 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) - $0 stop - $0 start + 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 + 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 - -exit 0 - - - -