master
rcsm
1#!/bin/rc
2
3flag e +
4
5basedir=/etc/rcsm
6
7fn usage {
8 printf 'Usage: -a|-d|-c|-h|-k|-l|-s|-r\n'
9}
10
11fn run {
12 switch($#*) {
13 case 1
14 for (serv in $basedir/run/*) {
15 $serv $1 >/dev/null >[2=1] &
16 }
17 case *
18 cmd=$1
19 shift
20 for (serv) {
21 $basedir/avail/$serv $cmd >/dev/null >[2=1] &
22 }
23 }
24}
25
26switch($1) {
27case -a
28 switch($#*) {
29 case 1
30 find $basedir/run -type l
31 case *
32 shift
33 for (serv) {
34 ln -sf $basedir/avail/$serv $basedir/run/
35 }
36 }
37case -c
38 test -d $basedir/run || mkdir -p $basedir/run
39 test -d $basedir/avail || mkdir -p $basedir/avail
40case -d
41 shift
42 for (serv) rm -fr $basedir/run/$serv
43case -h
44 usage
45case -k
46 run $*
47case -l
48 find $basedir/avail -type f
49case -r
50 shift
51 for (serv) {
52 run -k $basedir/run/$serv
53 sleep 1
54 run -s $basedir/run/$serv
55 }
56case -s
57 run $*
58case *
59 printf 'Invalid argument\n'
60 usage && exit 1
61}