]> git.pld-linux.org Git - packages/daemontools.git/blob - daemontools.init
573078a216912435cf460032dc932c2d0e946306
[packages/daemontools.git] / daemontools.init
1 #!/bin/sh
2 #
3 # svscan        svscan (scan and run services)
4 #
5 # chkconfig:    345 14 89
6 #
7 # description:  svscan (scan and run services) is a server part of the daemontools suite.
8 #
9 # $Id$
10 #
11
12 # Source function library
13 . /etc/rc.d/init.d/functions
14
15 # Get network config
16 . /etc/sysconfig/network
17
18 # Get service config
19 [ -f /etc/sysconfig/svscan ] && . /etc/sysconfig/svscan
20
21 # Check that networking is up.
22 if is_yes "${NETWORKING}"; then
23         if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
24                 msg_network_down svscan
25                 exit 1
26         fi
27 else
28         exit 0
29 fi
30
31 start() {
32         # Check if the service is already running?
33         if [ ! -f /var/lock/subsys/svscan ]; then
34                 msg_starting svscan;
35                 busy
36                 # we can't get status report from background job
37                 # but we can only do simple file check
38                 if [ -w $SVSCAN_DIR ]; then
39                         daemon --fork /usr/sbin/svscan $SVSCAN_DIR
40                         RETVAL=$?
41                 else
42                         fail
43                         echo $(nls "Missing service directory")'!'
44                         nls "Create %s first." "$SVSCAN_DIR"
45                         RETVAL=1
46                 fi
47                 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/svscan
48         else
49                 msg_already_running svscan
50         fi
51 }
52
53 stop() {
54         if [ -f /var/lock/subsys/svscan ]; then
55                 msg_stopping svscan
56                 killproc svscan
57                 svc=$(echo $SVSCAN_DIR/*)
58                 if [ "$svc" != "$SVSCAN_DIR/*" ]; then
59                         svc -d -x $SVSCAN_DIR/* \
60                                 $(find $SVSCAN_DIR/* -maxdepth 0 -follow -perm -1000 | sed -e 's,$,/log,')
61                 fi
62                 rm -f /var/run/svscan.pid /var/lock/subsys/svscan >/dev/null 2>&1
63         else
64                 msg_not_running svscan
65         fi
66 }
67
68 condrestart() {
69         if [ -f /var/lock/subsys/svscan ]; then
70                 stop
71                 start
72         else
73                 msg_not_running svscan
74                 RETVAL=$1
75         fi
76 }
77
78 RETVAL=0
79 # See how we were called.
80 case "$1" in
81   start)
82         start
83         ;;
84   stop)
85         stop
86         ;;
87   restart|force-reload)
88         stop
89         start
90         ;;
91   try-restart)
92         condrestart 0
93         ;;
94   force-reload)
95         condrestart 7
96         ;;
97   status)
98         status svscan
99         RETVAL=$?
100         svstat $SVSCAN_DIR/*
101         RETVAL=$(($RETVAL + $?))
102         ;;
103   *)
104         msg_usage "$0 {start|stop|restart|try-restart|force-reload|status}"
105         exit 3
106 esac
107
108 exit $RETVAL
This page took 0.059748 seconds and 2 git commands to generate.