mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-15 13:32:59 +02:00
collectd hangs with 100% cpu usage if there is a very old entry in the database. This was created at the first start without internet so ntp cannot set the time.
123 lines
3.2 KiB
Bash
123 lines
3.2 KiB
Bash
#!/bin/sh
|
|
# Begin $rc_base/init.d/collecd
|
|
|
|
|
|
. /etc/sysconfig/rc
|
|
. $rc_functions
|
|
|
|
eval $(/usr/local/bin/readhash /var/ipfire/main/settings)
|
|
|
|
if [ "$RRDLOG" = '' ]; then
|
|
RRDLOG=/var/log/rrd
|
|
fi
|
|
|
|
case "$1" in
|
|
start)
|
|
# If run from init and collectd alrady started then exit silent
|
|
if [ "$(basename $0)" != "collectd" ]; then
|
|
if [ "$(ps -A | grep " collectd$")" != "" ]; then
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
# ARM does not support to scan for sensors. In that case,
|
|
# we create an empty configuration file.
|
|
machine=$(uname -m)
|
|
if [ "${machine:0:3}" = "arm" ]; then
|
|
touch /etc/sysconfig/lm_sensors
|
|
fi
|
|
|
|
# At first run search for sensors with sensors-detect
|
|
if [ ! -e /etc/sysconfig/lm_sensors ]; then
|
|
boot_mesg "Searching for Sensors..."
|
|
|
|
# pre scan and try to load modules
|
|
"yes" | /usr/sbin/sensors-detect > /dev/null
|
|
if [ -e /etc/sysconfig/lm_sensors ]; then
|
|
# Module load
|
|
for modul in `cat /etc/sysconfig/lm_sensors | grep '^MODULE_' | cut -d"=" -s -f2`; do
|
|
modprobe $modul > /dev/null 2>&1;
|
|
done
|
|
fi
|
|
|
|
# Final scan
|
|
"yes" | /usr/sbin/sensors-detect > /dev/null
|
|
evaluate_retval
|
|
|
|
if [ ! -e /etc/sysconfig/lm_sensors ]; then
|
|
echo "#No Sensors detected " > /etc/sysconfig/lm_sensors
|
|
fi
|
|
fi
|
|
|
|
# Load sensor modules only first start
|
|
if [ ! -e /var/lock/sensors_modules ]; then
|
|
touch /var/lock/sensors_modules
|
|
boot_mesg -n "Loading Sensor Modules: "
|
|
for modul in `cat /etc/sysconfig/lm_sensors | grep '^MODULE_' | cut -d"=" -s -f2`; do
|
|
modprobe $modul > /dev/null 2>&1;
|
|
if [ ${?} = 0 ]; then
|
|
boot_mesg -n "$SUCCESS$modul$NORMAL ";
|
|
else
|
|
boot_mesg -n "$WARNING$modul$NORMAL ";
|
|
fi
|
|
done
|
|
boot_mesg;
|
|
echo_ok;
|
|
fi
|
|
|
|
# Enable sensors plugin if sensors found
|
|
if [ "$( sensors 2>&1 | grep 'No sensors found!' | wc -l )" == "1" ]; then
|
|
sed -i -e "s|^LoadPlugin sensors|#LoadPlugin sensors|g" /etc/collectd.conf
|
|
else
|
|
sed -i -e "s|^#LoadPlugin sensors|LoadPlugin sensors|g" /etc/collectd.conf
|
|
fi
|
|
|
|
# Enable thermal plugin if thermal_zone found
|
|
if [ ! -e /sys/class/thermal/thermal_zone0 ]; then
|
|
sed -i -e 's|^include "/etc/collectd.thermal"$|#include "/etc/collectd.thermal"|g' /etc/collectd.conf
|
|
else
|
|
sed -i -e 's|^#include "/etc/collectd.thermal"$|include "/etc/collectd.thermal"|g' /etc/collectd.conf
|
|
fi
|
|
|
|
# Enable swap plugin if swap found
|
|
if [ "$(swapon -s | wc -l)" == "1" ]; then
|
|
sed -i -e "s|^LoadPlugin swap|#LoadPlugin swap|g" /etc/collectd.conf
|
|
else
|
|
sed -i -e "s|^#LoadPlugin swap|LoadPlugin swap|g" /etc/collectd.conf
|
|
fi
|
|
|
|
if [ $(date +%Y) -gt 2011 ]; then
|
|
boot_mesg "Starting Collection daemon..."
|
|
/usr/sbin/collectd -C /etc/collectd.conf
|
|
evaluate_retval
|
|
else
|
|
boot_mesg "collectd: cannot start with incorrect time ($(date))."
|
|
echo_warning;
|
|
fi
|
|
;;
|
|
stop)
|
|
boot_mesg "Stopping Collection daemon..."
|
|
killproc /usr/sbin/collectd
|
|
evaluate_retval
|
|
# Save the ramdisk at manual stop but not at shutdown
|
|
if [ "$(basename $0)" == "collectd" ]; then
|
|
/etc/init.d/tmpfs backup
|
|
fi
|
|
;;
|
|
restart)
|
|
${0} stop
|
|
sleep 1
|
|
${0} start
|
|
;;
|
|
status)
|
|
statusproc /usr/sbin/collectd
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $0 {start|stop|restart|status}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# End $rc_base/init.d/collectd
|