From f64d3651d9e6789b91a08d7c8e4af4de5b2b9f0a Mon Sep 17 00:00:00 2001 From: Mark Huang Date: Tue, 26 Oct 2004 04:45:54 +0000 Subject: [PATCH] - giving slices 60 seconds to start isn't realistic. Revert to previous vserver-init behavior, fork off all vserver init routines (except for high priority/system slices who can set BACKGROUND=no in their .conf files, e.g. pl_netflow). vserver exit routines still get 60 seconds to complete, then they are forcibly killed. - log stdout/stderr to slice's /var/log/boot.log and close stdin for their init routines. This may break sensitive SysV init scripts that assume terminal access. --- scripts/vserver | 2 +- sysv/vservers.subst | 95 ++++++++++++++++++++------------------------- 2 files changed, 43 insertions(+), 54 deletions(-) diff --git a/scripts/vserver b/scripts/vserver index 1287e1c..7aae608 100755 --- a/scripts/vserver +++ b/scripts/vserver @@ -445,7 +445,7 @@ elif [ "$2" = "start" ] ; then export PATH=$DEFAULTPATH # XXX execute /etc/rc.vinit first for backward compatibility for CMD in "$VINIT_CMD $2" "$STARTCMD" ; do - $WAITFOR_CMD $NICECMD \ + $NICECMD \ $CHCONTEXT_CMD $SILENT $DISCONNECT $CAPS $FLAGS $CTXOPT $HOSTOPT $DOMAINOPT --secure \ $SAVE_S_CONTEXT_CMD /var/run/vservers/$1.ctx \ $CAPCHROOT_CMD $CHROOTOPT . $CMD diff --git a/sysv/vservers.subst b/sysv/vservers.subst index 5f4639f..523f4fa 100755 --- a/sysv/vservers.subst +++ b/sysv/vservers.subst @@ -4,66 +4,60 @@ # 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 + 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) } 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 ${*:-`sortserver`} ; 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 & - else - startservers $* - fi + startservers $* 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 + $USR_SBIN/vserver $name stop done rm -f /var/lock/subsys/vservers ;; @@ -77,13 +71,12 @@ case "$1" in ;; 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 ;; *) @@ -92,7 +85,3 @@ case "$1" in esac exit 0 - - - - -- 2.47.0