4 # Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; version 2 of the License.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 : ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
22 test -e "$UTIL_VSERVER_VARS" || {
23 echo "Can not find util-vserver installation; aborting..."
26 . "$UTIL_VSERVER_VARS"
29 ### Some local functions
34 $"Usage: $(basename $0) [-s|--sync] [-v|--verbose]
35 [--] <vserver> <command> <args>*
37 <vserver> is the name of a vserver.
39 Possible commands are:
40 start ... starts the specified vserver
41 stop ... stops the specified vserver
42 restart ... restarts the specified vserver; this is the subsequent
43 execution of a synchronized 'stop' and a 'start'
44 condrestart ... restarts the vserver when it is running already
45 suexec <user> <shell-command> <args*>
46 ... executes a command as the specified user in the vserver
47 exec <shell-command> <args*>
48 ... executes a command as root in the vserver
49 enter ... executes the configured shell in the vserver
50 chkconfig <chkconfig-options*>
51 ... modifies the init-system; currently, only Red Hat's
52 chkconfig is supported
53 running ... succeeds iff the vserver is running
54 status ... gives out some human readable status information about
55 the vserver, and succeeds iff the vserver is running
58 ... builds a new vserver from scratch
60 Please report bugs to $PACKAGE_BUGREPORT"
64 function showVersion()
67 $"vserver $PACKAGE_VERSION -- manages the state of vservers
68 This program is part of $PACKAGE_STRING
70 Copyright (C) 2003 Enrico Scholz
71 This program is free software; you may redistribute it under the terms of
72 the GNU General Public License. This program has absolutely no warranty."
81 tmp=$(getopt -o +sv --long help,version,sync,verbose -n "$0" -- "$@") || exit 1
89 --help) showHelp $0 ;;
90 --version) showVersion ;;
91 -v|--verbose) OPTION_VERBOSE=1; shift;;
92 -s|--sync) OPTION_FORCE_SYNC=1; shift;;
94 *) echo $"vserver: internal error; arg=='$1'"; exit 1;;
102 test "$cmd" != build || { shift 2; exec "$_VSERVER_BUILD" -n "$vserver" "$@"; }
108 ./*) VSERVER_DIR=`pwd`/$vserver;;
109 /*) VSERVER_DIR=$vserver;;
110 *) VSERVER_DIR=$CONFDIR/$vserver
115 if test "$allow_legacy"; then
117 test ! -e "$VSERVER_DIR/legacy" || do_legacy=1
118 test -d "$VSERVER_DIR" -o ! -e "$CONFDIR/$vserver.conf" || do_legacy=1
120 test -z "$do_legacy" || {
121 echo $"WARNING: can not find configuration, assuming legacy method"
122 exec "$_VSERVER_LEGACY" "$@"
126 test -d "$VSERVER_DIR" || {
127 echo "Can not find vserver-setup"
131 if test -e "$VSERVER_DIR"/name; then
132 read VSERVER_NAME <"$VSERVER_DIR"/name
134 VSERVER_NAME=$(basename "$VSERVER_DIR")
137 . $PKGLIBDIR/vserver.functions
141 . $PKGLIBDIR/vserver.$cmd
144 "$0" --sync "$1" stop
148 test ! isVserverRunning "$VSERVER_DIR" || exec "$0" "$1" restart
152 exec "$0" "$vserver" suexec root "$@"
156 exec "$0" "$vserver" suexec root chkconfig "$@"
159 getEnterShell "$VSERVER_DIR"
160 exec "$0" "$1" suexec root "${ENTER_SHELL[@]}"
163 isVserverRunning "$VSERVER_DIR"
166 if getVserverStatus "$VSERVER_DIR" ctx procnum; then
167 echo $"Vserver '$1' is running at context '$ctx'"
169 if test "$2" = status; then
170 echo $"Number of processes:" $procnum
172 "$_FILETIME" "$VSERVER_DIR/run"
176 echo $"Vserver '$1' is not running"
181 echo $"Usage: $0 {start|stop|suexec|restart|condrestart|exec|enter|chkconfig|running|status}"