]> glassweightruler.freedombox.rocks Git - Ventoy.git/blob - VBLADE/vblade-master/contrib/persistence/vblade.init.lsb-daemon
Edited! (#2105)
[Ventoy.git] / VBLADE / vblade-master / contrib / persistence / vblade.init.lsb-daemon
1 #!/bin/sh
2
3 ### BEGIN INIT INFO
4 # Provides: vblade
5 # Required-Start: $remote_fs $syslog $network
6 # Required-Stop: $remote_fs $syslog $network
7 # Default-Start: 2 3 4 5
8 # Default-Stop: 0 1 6
9 # Short-Description: vblade exports
10 # Description: Manage all vlbade exports defined in
11 # /etc/vblade.conf.d/
12 ### END INIT INFO
13
14 PATH=/sbin:/usr/sbin:/bin:/usr/bin
15 DESC="vblade export"
16 NAME=vblade
17 VBLADE="/usr/sbin/$NAME"
18 DAEMON=/usr/bin/daemon
19 IONICE=/usr/bin/ionice
20 PIDDIR="/var/run/vblade/"
21
22 [ -x "$VBLADE" ] || exit 0
23 [ -x "$DAEMON" ] || exit 0
24
25 mkdir -p "$PIDDIR"
26
27 # Load the VERBOSE setting and other rcS variables
28 . /lib/init/vars.sh
29
30 # Define LSB functions
31 . /lib/lsb/init-functions
32
33 # Start a vblade instance
34 #
35 # Return
36 # 0 if daemon has been started
37 # 1 if daemon was already running
38 # 2 if daemon could not be started
39 do_start () {
40 local INSTANCE="$1"
41 local CONFIG="$2"
42
43 sh -n "$CONFIG" 2>/dev/null || return 2
44
45 shelf=
46 slot=
47 filename=
48 netif=
49 options=
50 ionice=
51
52 . "$CONFIG"
53
54 [ "$netif" ] || return 2
55 [ "$shelf" ] || return 2
56 [ "$slot" ] || return 2
57 [ "$filename" ] || return 2
58
59 if [ "$ionice" ] ; then
60 if [ -x "$IONICE" ] ; then
61 ionice="$IONICE $ionice"
62 else
63 ionice=
64 fi
65 fi
66
67 "$DAEMON" \
68 --running \
69 --name "$INSTANCE" \
70 --pidfiles "$PIDDIR" \
71 && return 1
72 $ionice "$DAEMON" \
73 --respawn \
74 --name "$INSTANCE" \
75 --pidfiles "$PIDDIR" \
76 --output daemon.notice \
77 --stdout daemon.notice \
78 --stderr daemon.err -- \
79 $VBLADE $options $shelf $slot $netif $filename || return 2
80 }
81
82 # Stop a vblade instance
83 #
84 # Return
85 # 0 if daemon has been stopped
86 # 1 if daemon was already stopped
87 # 2 if daemon could not be stopped
88 # other if a failure occurred
89 do_stop () {
90 local INSTANCE="$1"
91
92 "$DAEMON" \
93 --running \
94 --name "$INSTANCE" \
95 --pidfiles "$PIDDIR" || return 1
96 "$DAEMON" \
97 --stop \
98 --name "$INSTANCE" \
99 --pidfiles "$PIDDIR" \
100 --stop || return 2
101 # Wait until the process is gone
102 for i in $(seq 1 10) ; do
103 "$DAEMON" \
104 --running \
105 --name "$INSTANCE" \
106 --pidfiles "$PIDDIR" || return 0
107 done
108 return 2
109 }
110
111 EXIT=0
112
113 do_action () {
114 local CONFIG="$1"
115
116 INSTANCE="$(basename "${CONFIG%%.conf}")"
117
118 case "$ACTION" in
119 start)
120 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$INSTANCE"
121 do_start "$INSTANCE" "$CONFIG"
122 case "$?" in
123 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
124 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
125 esac
126 ;;
127 stop)
128 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$INSTANCE"
129 do_stop "$INSTANCE"
130 case "$?" in
131 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
132 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
133 esac
134 ;;
135 status)
136 status_of_proc -p "$PIDDIR/$INSTANCE.pid" "$VBLADE" "vblade instance $INSTANCE" || EXIT=$?
137 ;;
138 restart|force-reload)
139 log_daemon_msg "Restarting $DESC" "$INSTANCE"
140 do_stop "$INSTANCE"
141 case "$?" in
142 0|1)
143 do_start "$INSTANCE" "$CONFIG"
144 case "$?" in
145 0) log_end_msg 0 ;;
146 *)
147 # Old process is still running or
148 # failed to start
149 log_end_msg 1 ;;
150 esac
151 ;;
152 *)
153 # Failed to stop
154 log_end_msg 1
155 ;;
156 esac
157 ;;
158 *)
159 echo "Usage: /etc/init.d/vblade {start|stop|status|restart|force-reload} [<export> ...]" >&2
160 exit 3
161 ;;
162 esac
163 }
164
165
166 ACTION="$1"
167 shift
168
169 if [ "$1" ] ; then
170 while [ "$1" ] ; do
171 CONFIG="/etc/vblade.conf.d/$1.conf"
172 if [ -f "$CONFIG" ] ; then
173 do_action "$CONFIG"
174 fi
175 shift
176 done
177 else
178 for CONFIG in /etc/vblade.conf.d/*.conf ; do
179 if [ -f "$CONFIG" ] ; then
180 do_action "$CONFIG"
181 fi
182 done
183 fi
184
185 exit $EXIT