This commit was manufactured by cvs2svn to create tag
[util-vserver.git] / sysv / vservers.subst
1 #!/bin/sh
2 # chkconfig: 345 99 01
3 # description: The vservers service is used to start and stop all
4 #              the virtual servers.
5
6 USR_SBIN=/usr/sbin
7 VROOTDIR=/vservers
8
9 # Print the vserver name in priority/alpha order
10 sortserver(){
11     (
12     cd /etc/vservers
13     for serv in *.conf ; do
14         test -f "$serv" || continue
15         PRIORITY=100
16         . $serv
17         printf "%03d %s\n" $PRIORITY `basename $serv .conf`
18     done
19     ) | sort $* | (while read a b; do echo $b; done)
20 }
21
22 startservers(){
23     echo "Starting the virtual servers"
24     cd /etc/vservers
25     for name in ${*:-`sortserver`} ; do
26         if ! test -f "$name.conf" ; then
27             echo No configuration for this vserver: /etc/vservers/$name.conf
28             continue
29         fi
30         ONBOOT=
31         BACKGROUND=no
32         if [ -f /etc/vservers.conf ] ; then
33             . /etc/vservers.conf
34         fi
35         . $name.conf
36         if [ "$ONBOOT" = "yes" ] ; then
37             mkdir -p $VROOTDIR/$name/var/log
38             if [ "$BACKGROUND" = "yes" ] ; then
39                 nohup setsid $USR_SBIN/vserver $name start >$VROOTDIR/$name/var/log/boot.log 2>&1 </dev/null &
40                 sleep 1
41             else
42                 $USR_SBIN/vserver $name start 2>&1 </dev/null | tee $VROOTDIR/$name/var/log/boot.log
43             fi
44         fi
45     done
46 }
47
48 # See how we were called.
49 case "$1" in
50   start)
51         shift
52         startservers $*
53         touch /var/lock/subsys/vservers
54         ;;
55   stop)
56         shift
57         echo "Stopping the virtual servers"
58         cd /etc/vservers
59         for name in ${*:-`sortserver -r`} ; do
60             $USR_SBIN/vserver $name stop
61         done
62         rm -f /var/lock/subsys/vservers
63         ;;
64   restart|force-reload)
65         shift
66         $0 stop $*
67         $0 start $*
68         ;;
69   reload)
70         echo Not implemented
71         ;;
72   status)
73         cd /etc/vservers
74         for serv in *.conf ; do
75             ONBOOT=no
76             name=`basename $serv .conf`
77             . $serv
78             echo -n ONBOOT=$ONBOOT " "
79             $USR_SBIN/vserver $name running
80         done
81         ;;
82   *)
83         echo "Usage: vservers {start|stop|restart|reload|status}"
84         exit 1
85 esac
86
87 exit 0