-
Notifications
You must be signed in to change notification settings - Fork 0
/
memfaultd.init
150 lines (132 loc) · 2.6 KB
/
memfaultd.init
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
140
141
142
143
144
145
146
147
148
149
150
#! /bin/sh
### BEGIN INIT INFO
# Provides: memfaultd
# Required-Start: $local_fs
# Should-Start:
# Required-Stop: $local_fs
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: manages the memfaultd daemon
### END INIT INFO
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="memfaultd"
NAME="memfaultd"
DAEMON=/usr/bin/memfaultd
PIDFILE=/var/run/$NAME.pid
ARGS="-Z -q"
. /etc/init.d/functions || exit 1
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
#
# Function that starts the daemon/service
#
do_start() {
local status pid
status=0
pid=`pidofproc $NAME` || status=$?
case $status in
0)
echo "$DESC already running ($pid)."
exit 1
;;
*)
echo "Starting $DESC ..."
cd /home/root
exec $DAEMON $ARGS
exit 0
;;
esac
}
#
# Function that stops the daemon/service
#
do_stop() {
local pid status
status=0
pid=`pidofproc $NAME` || status=$?
case $status in
0)
# Exit when fail to stop, the kill would complain when fail
kill -s SIGTERM $pid >/dev/null && rm -f $PIDFILE && \
echo "Stopped $DESC ($pid)." || exit $?
# Wait up to 10 seconds for the process to exit
for i in `seq 10`; do
if ! pidofproc $NAME > /dev/null; then
break
fi
sleep 1
done
;;
*)
echo "$DESC is not running; none killed." >&2
;;
esac
return 0
}
#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
local pid status
status=0
pid=`pidofproc $NAME` || status=$?
case $status in
0)
echo "Reloading $DESC ..."
kill -s SIGHUP $pid || exit $?
;;
*)
echo "$DESC is not running; none reloaded." >&2
;;
esac
exit $status
}
#
# Function that shows the daemon/service status
#
status_of_proc () {
local pid status
status=0
# pidof output null when no program is running, so no "2>/dev/null".
pid=`pidofproc $NAME` || status=$?
case $status in
0)
echo "$DESC is running ($pid)."
exit 0
;;
*)
echo "$DESC is not running." >&2
exit $status
;;
esac
}
case "$1" in
start)
do_start
;;
stop)
do_stop || exit $?
;;
status)
status_of_proc
;;
restart)
# Always start the service regardless the status of do_stop
do_stop
do_start
;;
try-restart|force-reload)
do_stop && do_start
;;
reload)
do_reload
;;
*)
echo "Usage: $0 {start|stop|status|restart|try-restart|force-reload}" >&2
exit 3
;;
esac