X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fvserver;h=c9f9f24edce8f7d6a22113463aa021d25da62cab;hb=73344887cd41fa1157c86ae3e1ad75e007e6e0d8;hp=ab8dfa1a001ec6d68477e43d5c21494c35f174e7;hpb=e73af524ef22868d4980ae13430c205798603c41;p=util-vserver.git diff --git a/scripts/vserver b/scripts/vserver index ab8dfa1..c9f9f24 100755 --- a/scripts/vserver +++ b/scripts/vserver @@ -31,7 +31,7 @@ test -e "$UTIL_VSERVER_VARS" || { function showHelp() { echo \ -$"Usage: $(basename $0) [-s|--sync] [-v|--verbose] [--silent] +$"Usage: $(basename $0) [-s|--sync] [-v|--verbose] [--silent] [--debug] [--] * is the name of a vserver. @@ -44,9 +44,9 @@ Possible commands are: restart ... restarts the specified vserver; this is the subsequent execution of a synchronized 'stop' and a 'start' condrestart ... restarts the vserver when it is running already - suexec + suexec ... executes a command as the specified user in the vserver - exec + exec ... executes a command as root in the vserver enter ... executes the configured shell in the vserver chkconfig @@ -57,7 +57,8 @@ Possible commands are: the vserver, and succeeds iff the vserver is running build * - ... builds a new vserver from scratch + ... builds a new vserver from scratch, see + vserver ... build --help for details delete ... remove a vserver unify [-R] * @@ -164,25 +165,28 @@ test "$cmd" != build || { shift 2; exec $_VNAMESPACE --new -- \ allow_legacy= +vserver="${vserver%%/}" case "$vserver" in - (./*) VSERVER_DIR=`pwd`/$vserver;; - (/*) VSERVER_DIR=$vserver;; - (*) VSERVER_DIR=$__CONFDIR/$vserver - allow_legacy=1 - ;; + (./*) VSERVER_DIR="`pwd`/$vserver";; + (/*) VSERVER_DIR="$vserver";; + (*) # Check if this is a context id + context=$(vuname --get --xid "$vserver" 2>/dev/null) + if test -d "$context"; then + VSERVER_DIR="$context" + else + VSERVER_DIR="$__CONFDIR/$vserver" + do_legacy= + test ! -e "$VSERVER_DIR/legacy" || do_legacy=1 + 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" >&2 + exec "$_VSERVER_LEGACY" "$@" + } + fi + ;; esac -if test -n "$allow_legacy"; then - do_legacy= - test ! -e "$VSERVER_DIR/legacy" || do_legacy=1 - 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" >&2 - exec "$_VSERVER_LEGACY" "$@" - } -fi - test -d "$VSERVER_DIR" || { echo $"\ Can not find a vserver-setup at '$VSERVER_DIR/'. @@ -198,11 +202,11 @@ Possible solutions: _setVserverName # Create a new namespace when starting the guest -test "$2" != start -o -n "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \ +test "$cmd" != start -o -n "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \ exec $_VNAMESPACE --new -- $_VSERVER ----nonamespace "${OPTIONS_ORIG[@]}" # Enter the namespace early so we can test for files inside the guest -test "$2" != enter -a "$2" != stop || \ +test "$cmd" != enter -a "$cmd" != stop || \ test -n "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \ ! isVserverRunning "$VSERVER_DIR" || \ exec $_VNAMESPACE --enter "$VSERVER_DIR" -- $_VSERVER ----nonamespace "${OPTIONS_ORIG[@]}"