Última atividade 1 month ago

debian-init.sh Bruto
1#!/bin/sh
2### BEGIN INIT INFO
3# Provides: generic-prog
4# Required-Start: $local_fs $remote_fs $network
5# Required-Stop: $local_fs $remote_fs $network
6# Default-Start: 2 3 4 5
7# Default-Stop: 0 1 6
8# Short-Description: Generic Program
9# Description: Generic Program is a generic program to do generic things with
10### END INIT INFO
11
12
13# Documentation available at
14# http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html
15# Debian provides some extra functions though
16. /lib/lsb/init-functions
17
18
19DAEMON_NAME="generic-prog"
20DAEMON_USER="generic-prog-user"
21DAEMON_PATH="/usr/local/bin/generic-prog"
22DAEMON_OPTS="-c /etc/generic-prog.conf"
23DAEMON_PWD="${PWD}"
24DAEMON_DESC=$(get_lsb_header_val $0 "Short-Description")
25DAEMON_PID="/var/run/${DAEMON_NAME}.pid"
26DAEMON_NICE=0
27DAEMON_LOG='/var/log/generic-prog'
28
29[ -r "/etc/default/${DAEMON_NAME}" ] && . "/etc/default/${DAEMON_NAME}"
30
31do_start() {
32 local result
33
34 pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null
35 if [ $? -eq 0 ]; then
36 log_warning_msg "${DAEMON_NAME} is already started"
37 result=0
38 else
39 log_daemon_msg "Starting ${DAEMON_DESC}" "${DAEMON_NAME}"
40 touch "${DAEMON_LOG}"
41 chown $DAEMON_USER "${DAEMON_LOG}"
42 chmod u+rw "${DAEMON_LOG}"
43 if [ -z "${DAEMON_USER}" ]; then
44 start-stop-daemon --start --quiet --oknodo --background \
45 --nicelevel $DAEMON_NICE \
46 --chdir "${DAEMON_PWD}" \
47 --pidfile "${DAEMON_PID}" --make-pidfile \
48 --exec "${DAEMON_PATH}" -- $DAEMON_OPTS
49 result=$?
50 else
51 start-stop-daemon --start --quiet --oknodo --background \
52 --nicelevel $DAEMON_NICE \
53 --chdir "${DAEMON_PWD}" \
54 --pidfile "${DAEMON_PID}" --make-pidfile \
55 --chuid "${DAEMON_USER}" \
56 --exec "${DAEMON_PATH}" -- $DAEMON_OPTS
57 result=$?
58 fi
59 log_end_msg $result
60 fi
61 return $result
62}
63
64do_stop() {
65 local result
66
67 pidofproc -p "${DAEMON_PID}" "${DAEMON_PATH}" > /dev/null
68 if [ $? -ne 0 ]; then
69 log_warning_msg "${DAEMON_NAME} is not started"
70 result=0
71 else
72 log_daemon_msg "Stopping ${DAEMON_DESC}" "${DAEMON_NAME}"
73 killproc -p "${DAEMON_PID}" "${DAEMON_PATH}"
74 result=$?
75 log_end_msg $result
76 rm "${DAEMON_PID}"
77 fi
78 return $result
79}
80
81do_restart() {
82 local result
83 do_stop
84 result=$?
85 if [ $result = 0 ]; then
86 do_start
87 result=$?
88 fi
89 return $result
90}
91
92do_status() {
93 local result
94 status_of_proc -p "${DAEMON_PID}" "${DAEMON_PATH}" "${DAEMON_NAME}"
95 result=$?
96 return $result
97}
98
99do_usage() {
100 echo $"Usage: $0 {start | stop | restart | status}"
101 exit 1
102}
103
104case "$1" in
105start) do_start; exit $? ;;
106stop) do_stop; exit $? ;;
107restart) do_restart; exit $? ;;
108status) do_status; exit $? ;;
109*) do_usage; exit 1 ;;
110esac
111