- removed '#! /bin/bash' header
[util-vserver.git] / util-vserver / scripts / vserver
1 #! /bin/bash
2 # $Id$
3
4 # Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
5 #  
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.
9 #  
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.
14 #  
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.
18
19 : ${UTIL_VSERVER_VARS:=$(dirname $0)/util-vserver-vars}
20 test -e "$UTIL_VSERVER_VARS" || {
21     echo "Can not find util-vserver installation; aborting..."
22     exit 1
23 }
24 . "$UTIL_VSERVER_VARS"
25 . "$_LIB_FUNCTIONS"
26
27 vserver=$1
28 cmd=$2
29
30 allow_legacy=
31
32 case "$vserver" in
33     ./*) VSERVER_DIR=`pwd`/$vserver;;
34     /*)  VSERVER_DIR=$vserver;;
35     *)   VSERVER_DIR=$CONFDIR/$vserver
36          allow_legacy=1
37          ;;
38 esac
39
40 if test "$allow_legacy"; then
41     do_legacy=
42     test ! -e "$VSERVER_DIR/legacy" || do_legacy=1
43     test -d "$VSERVER_DIR" -o ! -e "$CONFDIR/$vserver.conf" || do_legacy=1
44
45     test -z "$do_legacy" || {
46         echo $"WARNING: can not find configuration, assuming legacy method"
47         exec "$_VSERVER_LEGACY" "$@"
48     }
49 fi
50
51 test -d "$VSERVER_DIR" || {
52     echo "Can not find vserver-setup"
53     exit 1
54 }
55
56 if test -e "$VSERVER_DIR"/name; then
57     read VSERVER_NAME <"$VSERVER_DIR"/name
58 else
59     VSERVER_NAME=$(basename "$VSERVER_DIR")
60 fi
61
62 . $PKGLIBDIR/vserver.functions
63 case "$2" in
64     start|stop|suexec)
65         shift 2
66         . $PKGLIBDIR/vserver.$cmd
67         ;;
68     restart)
69         "$0" "$1" stop
70         exec "$0" "$1" start
71         ;;
72     condrestart)
73         test ! isVserverRunning "$VSERVER_DIR" || exec "$0" "$1" restart
74         ;;
75     exec)
76         shift 2
77         exec "$0" "$vserver" suexec root "$@"
78         ;;
79     chkconfig)
80         shift 2
81         exec "$0" "$vserver" suexec root chkconfig "$@"
82         ;;
83     enter)
84         getEnterShell "$VSERVER_DIR"
85         exec "$0" "$1" suexec root "${ENTER_SHELL[@]}"
86         ;;
87     running|status)
88         if getVserverStatus "$VSERVER_DIR" ctx procnum; then
89             echo $"Vserver '$1' is running at context '$ctx'"
90
91             if test "$2" = status; then
92                 echo    $"Number of processes:" $procnum
93                 echo -n $"Uptime:              "
94                 "$_FILETIME" "$VSERVER_DIR/run"
95             fi
96             exit 0
97         else
98             echo $"Vserver '$1' is not running"
99             exit 1
100         fi
101         ;;
102     *)
103         echo $"Usage: $0 {start|stop|suexec|restart|condrestart|exec|enter|chkconfig|running|status}"
104         exit 2
105         ;;
106 esac