root / trunk / swipe / tooltron.daemon @ 296
History | View | Annotate | Download (4.12 KB)
1 | 295 | rc99 | #! /bin/sh |
---|---|---|---|
2 | ### BEGIN INIT INFO |
||
3 | # Provides: tooltron |
||
4 | # Required-Start: $remote_fs $syslog |
||
5 | # Required-Stop: $remote_fs $syslog |
||
6 | # Default-Start: 2 3 4 5 |
||
7 | # Default-Stop: 0 1 6 |
||
8 | # Short-Description: The tooltron server |
||
9 | # Description: This file manages the tooltron server as a service |
||
10 | ### END INIT INFO |
||
11 | |||
12 | # Author: Brad Neuman <bradneuman@gmail.com> |
||
13 | 296 | rc99 | # This is a decently big hack that runs a screen to run the tooltron script |
14 | 295 | rc99 | |
15 | # Do NOT "set -e" |
||
16 | |||
17 | # PATH should only include /usr/* if it runs after the mountnfs.sh script |
||
18 | PATH=/sbin:/usr/sbin:/bin:/usr/bin |
||
19 | DESC="Tooltron Server" |
||
20 | NAME=tooltron |
||
21 | 296 | rc99 | DAEMON=/usr/bin/screen |
22 | #/usr/sbin/$NAME |
||
23 | DAEMON_ARGS="-dmS tooltron /usr/sbin/runtron.sh" |
||
24 | 295 | rc99 | PIDFILE=/var/run/$NAME.pid |
25 | SCRIPTNAME=/etc/init.d/$NAME |
||
26 | 296 | rc99 | USER=tooltron |
27 | 295 | rc99 | |
28 | # Exit if the package is not installed |
||
29 | [ -x "$DAEMON" ] || exit 0 |
||
30 | |||
31 | # Read configuration variable file if it is present |
||
32 | [ -r /etc/default/$NAME ] && . /etc/default/$NAME |
||
33 | |||
34 | # Load the VERBOSE setting and other rcS variables |
||
35 | . /lib/init/vars.sh |
||
36 | |||
37 | # Define LSB log_* functions. |
||
38 | # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. |
||
39 | . /lib/lsb/init-functions |
||
40 | |||
41 | # |
||
42 | # Function that starts the daemon/service |
||
43 | # |
||
44 | do_start() |
||
45 | { |
||
46 | # Return |
||
47 | # 0 if daemon has been started |
||
48 | # 1 if daemon was already running |
||
49 | # 2 if daemon could not be started |
||
50 | 296 | rc99 | start-stop-daemon --start --quiet -c $USER --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ |
51 | 295 | rc99 | || return 1 |
52 | 296 | rc99 | start-stop-daemon --start --quiet -c $USER --pidfile $PIDFILE --exec $DAEMON -- \ |
53 | 295 | rc99 | $DAEMON_ARGS \ |
54 | || return 2 |
||
55 | # Add code here, if necessary, that waits for the process to be ready |
||
56 | # to handle requests from services started subsequently which depend |
||
57 | # on this one. As a last resort, sleep for some time. |
||
58 | } |
||
59 | |||
60 | # |
||
61 | # Function that stops the daemon/service |
||
62 | # |
||
63 | do_stop() |
||
64 | { |
||
65 | # Return |
||
66 | # 0 if daemon has been stopped |
||
67 | # 1 if daemon was already stopped |
||
68 | # 2 if daemon could not be stopped |
||
69 | # other if a failure occurred |
||
70 | 296 | rc99 | start-stop-daemon --stop --quiet -u $USER |
71 | 295 | rc99 | RETVAL="$?" |
72 | 296 | rc99 | # [ "$RETVAL" = 2 ] && return 2 |
73 | # # Wait for children to finish too if this is a daemon that forks |
||
74 | # # and if the daemon is only ever run from this initscript. |
||
75 | # # If the above conditions are not satisfied then add some other code |
||
76 | # # that waits for the process to drop all resources that could be |
||
77 | # # needed by services started subsequently. A last resort is to |
||
78 | # # sleep for some time. |
||
79 | # start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON |
||
80 | # [ "$?" = 2 ] && return 2 |
||
81 | # # Many daemons don't delete their pidfiles when they exit. |
||
82 | 295 | rc99 | rm -f $PIDFILE |
83 | return "$RETVAL" |
||
84 | } |
||
85 | |||
86 | # |
||
87 | # Function that sends a SIGHUP to the daemon/service |
||
88 | # |
||
89 | do_reload() { |
||
90 | # |
||
91 | # If the daemon can reload its configuration without |
||
92 | # restarting (for example, when it is sent a SIGHUP), |
||
93 | # then implement that here. |
||
94 | # |
||
95 | start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME |
||
96 | return 0 |
||
97 | } |
||
98 | |||
99 | case "$1" in |
||
100 | start) |
||
101 | [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" |
||
102 | do_start |
||
103 | case "$?" in |
||
104 | 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; |
||
105 | 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; |
||
106 | esac |
||
107 | ;; |
||
108 | stop) |
||
109 | [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" |
||
110 | do_stop |
||
111 | case "$?" in |
||
112 | 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; |
||
113 | 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; |
||
114 | esac |
||
115 | ;; |
||
116 | status) |
||
117 | status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? |
||
118 | ;; |
||
119 | #reload|force-reload) |
||
120 | # |
||
121 | # If do_reload() is not implemented then leave this commented out |
||
122 | # and leave 'force-reload' as an alias for 'restart'. |
||
123 | # |
||
124 | #log_daemon_msg "Reloading $DESC" "$NAME" |
||
125 | #do_reload |
||
126 | #log_end_msg $? |
||
127 | #;; |
||
128 | restart|force-reload) |
||
129 | # |
||
130 | # If the "reload" option is implemented then remove the |
||
131 | # 'force-reload' alias |
||
132 | # |
||
133 | log_daemon_msg "Restarting $DESC" "$NAME" |
||
134 | do_stop |
||
135 | case "$?" in |
||
136 | 0|1) |
||
137 | do_start |
||
138 | case "$?" in |
||
139 | 0) log_end_msg 0 ;; |
||
140 | 1) log_end_msg 1 ;; # Old process is still running |
||
141 | *) log_end_msg 1 ;; # Failed to start |
||
142 | esac |
||
143 | ;; |
||
144 | *) |
||
145 | # Failed to stop |
||
146 | log_end_msg 1 |
||
147 | ;; |
||
148 | esac |
||
149 | ;; |
||
150 | *) |
||
151 | #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 |
||
152 | echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 |
||
153 | exit 3 |
||
154 | ;; |
||
155 | esac |
||
156 | |||
157 | : |