X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fscripts%2Fvserver;h=817d8357b41e28b81476b119c73a9bf3e860cf53;hb=e035f164c858115c488d0f2fc1e0d356a9096996;hp=f0b96f663654d3b13f8d224d1893ace1b1fc994e;hpb=5a35996b2f2fecabe6bd39c83fb904c7bf366950;p=util-vserver.git diff --git a/util-vserver/scripts/vserver b/util-vserver/scripts/vserver index f0b96f6..817d835 100755 --- a/util-vserver/scripts/vserver +++ b/util-vserver/scripts/vserver @@ -20,7 +20,7 @@ : ${UTIL_VSERVER_VARS:=/usr/lib/util-vserver/util-vserver-vars} test -e "$UTIL_VSERVER_VARS" || { - echo "Can not find util-vserver installation; aborting..." + echo "Can not find util-vserver installation; aborting..." >&2 exit 1 } . "$UTIL_VSERVER_VARS" @@ -31,7 +31,7 @@ test -e "$UTIL_VSERVER_VARS" || { function showHelp() { echo \ -$"Usage: $(basename $0) [-s|--sync] [-v|--verbose] +$"Usage: $(basename $0) [-s|--sync] [-v|--verbose] [--silent] [--] * is the name of a vserver. @@ -97,29 +97,48 @@ the GNU General Public License. This program has absolutely no warranty." exit 0 } +function suexec() +{ + . $PKGLIBDIR/vserver.suexec +} + +function restart() +{ + "${SELF[@]}" --sync "$vserver" stop + exec "${SELF[@]}" "$vserver" start +} ### main starts here set +e -tmp=$(getopt -o +sv --long help,debug,version,sync,verbose -n "$0" -- "$@") || exit 1 +OPTIONS_ORIG=( "$@" ) +tmp=$(getopt -o +sv --long nonamespace,--nonamespace,help,debug,version,sync,verbose,silent -n "$0" -- "$@") || exit 1 eval set -- "$tmp" OPTION_FORCE_SYNC= OPTION_VERBOSE= +OPTION_SILENT= +OPTION_DEBUG= +OPTION_NONAMESPACE= while true; do case "$1" in --help) showHelp $0 ;; --version) showVersion ;; - --debug) set -x; shift;; - -v|--verbose) OPTION_VERBOSE=1; shift;; - -s|--sync) OPTION_FORCE_SYNC=1; shift;; + --debug) OPTION_DEBUG=$1; set -x;; + -v|--verbose) OPTION_VERBOSE=$1;; + -s|--sync) OPTION_FORCE_SYNC=$1;; + --silent) OPTION_SILENT=$1;; + ----nonamespace)OPTION_NONAMESPACE=$1;; --) shift; break;; - *) echo $"vserver: internal error; arg=='$1'"; exit 1;; + *) echo $"vserver: internal error; arg=='$1'" >&2; exit 1;; esac + shift done +OPTION_ALL=( $OPTION_SILENT $OPTION_VERBOSE $OPTION_DEBUG ) +SELF=( "$0" "${OPTION_ALL[@]}" ) vserver=$1 cmd=$2 @@ -143,7 +162,7 @@ if test "$allow_legacy"; then test -d "$VSERVER_DIR" -o ! -e "$CONFDIR/$vserver.conf" || do_legacy=1 test -z "$do_legacy" || { - echo $"WARNING: can not find configuration, assuming legacy method" + echo $"WARNING: can not find configuration, assuming legacy method" >&2 exec "$_VSERVER_LEGACY" "$@" } fi @@ -151,7 +170,7 @@ fi test -d "$VSERVER_DIR" || { echo "Can not find vserver-setup" exit 1 -} +} >&2 if test -e "$VSERVER_DIR"/name; then read VSERVER_NAME <"$VSERVER_DIR"/name @@ -159,30 +178,33 @@ else VSERVER_NAME=$(basename "$VSERVER_DIR") fi +test "$2" != start -o "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \ + exec $_VNAMESPACE --new -- $_VSERVER ----nonamespace "${OPTIONS_ORIG[@]}" + . $PKGLIBDIR/vserver.functions case "$2" in - start|stop|suexec) + start|stop) shift 2 . $PKGLIBDIR/vserver.$cmd ;; - restart) - "$0" --sync "$1" stop - exec "$0" "$1" start + suexec|restart) + shift 2 + $cmd "$@" ;; condrestart) - test ! isVserverRunning "$VSERVER_DIR" || exec "$0" "$1" restart + test ! isVserverRunning "$VSERVER_DIR" || restart ;; exec) shift 2 - exec "$0" "$vserver" suexec root "$@" + suexec root "$@" ;; chkconfig) shift 2 - exec "$0" "$vserver" suexec root chkconfig "$@" + suexec root chkconfig "$@" ;; enter) getEnterShell "$VSERVER_DIR" - exec "$0" "$1" suexec root "${ENTER_SHELL[@]}" + suexec root "${ENTER_SHELL[@]}" ;; running) isVserverRunning "$VSERVER_DIR" @@ -209,7 +231,7 @@ case "$2" in status) if getVserverStatus "$VSERVER_DIR" ctx procnum; then - echo $"Vserver '$1' is running at context '$ctx'" + echo $"Vserver '$vserver' is running at context '$ctx'" if test "$2" = status; then echo $"Number of processes:" $procnum @@ -218,12 +240,12 @@ case "$2" in fi exit 0 else - echo $"Vserver '$1' is not running" + echo $"Vserver '$vserver' is not running" exit 1 fi ;; *) - echo $"Usage: $0 {start|stop|suexec|restart|condrestart|exec|enter|chkconfig|running|status}" + echo $"Usage: $0 {start|stop|suexec|restart|condrestart|exec|enter|chkconfig|running|status}" >&2 exit 2 ;; esac