-
Notifications
You must be signed in to change notification settings - Fork 0
/
rf_gpio.sh
executable file
·139 lines (128 loc) · 3.98 KB
/
rf_gpio.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#! /bin/sh
### BEGIN INIT INFO
# Provides: rf_gpio
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: RFLink sur gpio
# Description: Ĉi tiu demono komencos la servilo «RFLink sur gpio»
### END INIT INFO
# Do NOT "set -e"
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DESC="RFLink on gpio server"
NAME=rf_gpio
USERNAME=pi
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
DAEMON=/home/pi/rf_gpio/$NAME
INIFILE=/home/pi/rf_gpio/sentiloj.ini
DAEMON_ARGS="-d -h 10000 -i $INIFILE"
# Eliri se la pako ne estas instalita
[ -x "$DAEMON" ] || exit 0
# Ŝargu la agordon VERBOSE kaj aliaj rcS-variabloj
. /lib/init/vars.sh
. /lib/lsb/init-functions
pidof_rf_gpio() {
# se efektive estas procezo rf_gpio kies pid estas en PIDFILE,
# printi ĝin kaj redoni 0.
if [ -e "$PIDFILE" ]; then
if pidof rf_gpio | tr ' ' '\n' | grep -w $(cat $PIDFILE); then
return 0
fi
fi
return 1
}
#
# Funkcio kiu startas la daemon / servon
#
do_start()
{
# Redonu
# 0 se demono komenciĝis
# 1 se demono jam funkciis
# 2 se demono ne povus esti komencita
start-stop-daemon --chuid $USERNAME --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
}
#
# Funkcio kiu haltas la daemon / servon
#
do_stop()
{
# Redonu
# 0 se demono estas haltita
# 1 se demono jam estis haltita
# 2 se demono ne povus esti haltigita
# alia se fiasko okazis
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Atendu infanojn ankaŭ finiĝi, se ĉi tiu estas demono, kiu forkaŝas
# kaj se la daemon estas nur iam ajn prilaborita de ĉi tiu initscript.
# Se la supraj kondiĉoj ne estas kontentigitaj, aldonu alian kodon, kiu atendas
# ke la procezo faligu ĉiujn rimedojn bezonatajn per servoj poste komencitaj.
# Lasta rimedo estas dormi iom da tempo.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Multaj daemonoj ne forigas siajn pidfilojn kiam ili eliras.
rm -f $PIDFILE
return "$RETVAL"
}
case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Komencante $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Ĉesi $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
reload)
log_daemon_msg "Reŝargi $DESC" "$NAME"
PID=$(pidof_rf_gpio) || true
if [ "${PID}" ]; then
kill -HUP $PID
log_end_msg 0
else
log_end_msg 1
fi
;;
restart)
log_daemon_msg "Relanĉante $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Malnova procezo ankoraŭ funkcias
*) log_end_msg 1 ;; # Malsukcesis komenci
esac
;;
*)
# Malsukcesis ĉesi
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload}" >&2
exit 3
;;
esac
: