- start me last, kill me first
[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
8
9 # Print the vserver name in priority/alpha order
10 sortserver(){
11         (
12         cd /etc/vservers
13         for serv in *.conf
14         do
15                 test -f "$serv" || continue
16
17                 PRIORITY=100
18                 . $serv
19                 printf "%03d %s\n" $PRIORITY `basename $serv .conf`
20         done
21         ) | sort $* | (while read a b; do echo $b; done)
22 }
23
24 startservers(){
25         echo "Starting the virtual servers"
26         cd /etc/vservers
27         for name in ${*:-`sortserver`}
28         do
29                 if ! test -f "$name.conf" ; then
30                         echo No configuration for this vserver: /etc/vservers/$name.conf
31                         continue
32                 fi
33                 ONBOOT=
34                 . $name.conf
35                 if [ "$ONBOOT" = "yes" ] ; then
36                         $USR_SBIN/vserver $name start
37                 else
38                         echo virtual server $name not configured for on boot start
39                 fi
40         done
41 }
42
43 BACKGROUND=off
44 if [ -f /etc/vservers.conf ] ; then
45         . /etc/vservers.conf
46 fi
47
48
49 # See how we were called.
50 case "$1" in
51   start)
52         shift
53         if [ "$BACKGROUND" = "yes" ] ; then
54                 startservers $* >/dev/tty8 </dev/tty8 2>/dev/tty8 &
55         else
56                 startservers $*
57         fi
58         touch /var/lock/subsys/vservers
59         ;;
60   stop)
61         shift
62         echo "Stopping the virtual servers"
63         cd /etc/vservers
64         for name in ${*:-`sortserver -r`}
65         do
66                 $USR_SBIN/vserver $name stop
67         done
68         rm -f /var/lock/subsys/vservers
69         ;;
70   restart|force-reload)
71         $0 stop $*
72         $0 start $*
73         ;;
74   reload)
75         echo Not implemented
76         ;;
77   status)
78         cd /etc/vservers
79         for serv in *.conf
80         do
81                 ONBOOT=no
82                 name=`basename $serv .conf`
83                 . $serv
84                 echo -n ONBOOT=$ONBOOT " "
85                 $USR_SBIN/vserver $name running
86         done
87         ;;
88   *)
89         echo "Usage: vservers {start|stop|restart|reload|status}"
90         exit 1
91 esac
92
93 exit 0
94
95
96
97