ports/net-mgmt/netdata/files/netdata.in

97 lines
2.4 KiB
Bash

#!/bin/sh
# PROVIDE: netdata
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable netdata:
# netdata_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable netdata.
# netdata_args (str): Custom additional arguments to be passed
# to netdata (default empty).
# netdata_conf (str): Custom configuration file for netdata
# (default: %%ETCDIR%%/netdata.conf)
# netdata_user (str): Custom user to run netdata as
# (default: read from netdata_conf if
# it is set there, or "netdata")
# netdata_stop_maxwait (int): Maximum time to wait for termination on stop
# before resorting to SIGKILL to stop netdata.
#
# Written 2017 - 2019 Mahdi Mokhtari (mmokhi@)
# Written 2020 Matthias Andree (mandree@) with support by Dries Michiels
. /etc/rc.subr
name="netdata"
rcvar=netdata_enable
SED=/usr/bin/sed
TR=/usr/bin/tr
load_rc_config $name
: ${netdata_enable="NO"}
: ${netdata_conf="%%ETCDIR%%/${name}.conf"}
: ${netdata_pid="%%NETDATA_PERST%%/${name}.pid"}
: ${netdata_stop_maxwait=30}
# this is more or less a copy of /etc/rc.subr from 12.1-RELEASE
# around Early April 2020, but with a timeout, killing children,
# and SIGKILL added because sometimes netdata hangs.
stop_cmd() {
rc_pid=$(check_pidfile "${netdata_pid}" "${procname}")
if [ -z "$rc_pid" ] ; then
[ -n "$fc_fast" ] && return 0
_run_rc_notrunning
return 1
fi
_prefix=
echo "Stopping ${name}."
_list="$rc_pid $(pgrep -P $rc_pid)"
kill -TERM $_list
pwait -t 3 $_list 2>/dev/null
wtim=3
while :; do
_nlist=
for _j in $_list ; do
if kill -0 $_j 2>/dev/null ; then
_nlist="$_nlist${_nlist:+" "}$_j"
fi
done
if [ -z "$_nlist" ] ; then
break
fi
_list=$_nlist
echo -n ${_prefix:-"Waiting for PIDS: "}$_list
_prefix=", "
sleep 1
pwait -t 2 $_list 2>/dev/null
if [ $? -eq 124 ] ; then
wtim=$(($wtim + 3))
if [ $wtim -ge ${netdata_stop_maxwait} ] ; then
[ -n "$_prefix" ] && echo .
_prefix=
warn "${procname} has not terminated in ${netdata_stop_maxwait} s. Using SIGKILL $_list."
kill -KILL $_list
break
fi
fi
done
[ -n "$_prefix" ] && echo .
}
stop_postcmd() {
rm -f "${netdata_pid}"
}
procname="%%PREFIX%%/sbin/${name}"
command="/usr/sbin/daemon"
command_args="-c -f \"${procname}\" -P \"${netdata_pid}\" ${netdata_args}"
required_files="${netdata_conf}"
stop_cmd=stop_cmd
stop_postcmd=stop_postcmd # netdata always leaves its pid file behind.
run_rc_command "$1"