#!@BASH@
#
# @INITRDDIR@/sensord
#
# sensord This shell script takes care of starting and stopping
# sensord, the lm_sensors hardware health monitoring daemon.
#
# Here is the sensors service for SysV init, based on lm_sensors-2.5.5-sensors
# from Mandrake lm_sensors source RPM. It is modified according to recommendations
# for RedHat initscripts. The drivers starting part is taken from alsasound
# service. To configure this service one should put appropriate "alias i2c-bus-0
# xxx" and "alias i2c-sensors-chip-0 xxx" in /etc/modules.conf. The rest should be
# self explaining.
#
# You put it into /etc/rc.d/init.d/, you make a symlink (probably using
# chkconfig, ntsysv, tksysv or serviceconf program) named S95xxx and K05xxx
# into /etc/rc#.d (where # is the number of runlevel), and sensors service
# (which starts lm_sensors modules, runs sensors -s and starts sensord)
# will be started automatically at startup/reboot and stopped at shutdown.
# One could also start/stop service manually.
#
# This service was tested for RedHat 7.2 only.
# Jakub Narêbski, Poland
#
# chkconfig: 2345 05 95
# processname: sensord
# config: @SYSCONFDIR@/sensors.conf
# pidfile: /var/run/sensord.pid
# description: Sensors is a sensors daemon which can be used to alert you \
# in the event of a hardware health monitoring alarm.
# Source function library.
. @INITRDDIR@/functions
# Set default return value to 0 (success)
RETVAL=0
# Add @SBINDIR@ (sensord) and @BINDIR@ (sensors) to PATH if necessary
echo "$PATH" | grep -q @SBINDIR@ || PATH=$PATH:@SBINDIR@
echo "$PATH" | grep -q @BINDIR@ || PATH=$PATH:@BINDIR@
export PATH
# Modules to load from modules.conf (modules configuration)
i2c_bus_drivers=´modprobe -c | \
awk ´/^[[:space:]]*alias[[:space:]]+i2c-bus-[[:digit:]]/ { print $3 }´´
i2c_chip_drivers=´modprobe -c | \
awk ´/^[[:space:]]*alias[[:space:]]+i2c-sensors-chip-[[:digit:]]/ { print $3
}´´
# Configuration of sensord
interval=1m # interval between scanning for sensor alarms
log_interval=30m # interval between logging all sensor readings
# Check that we use kernel for which lm_sensors-drivers was installed
[ ´uname -r´ = @MVERSION@ ] || exit 0
# Check that lm_sensors is installed.
[ -x @SBINDIR@/sensord ] || exit 0
[ -x @BINDIR@/sensors ] || exit 0
echo_status()
{
if [ $1 -eq 0 ]; then
echo_success
else
echo_failure
fi
echo
}
start()
{
# Start modules
echo "Starting I2C bus (adapter) drivers: "
for driver in $i2c_bus_drivers; do
echo -n "Starting I2C driver: $driver "
/sbin/modprobe ´echo $driver´
echo_status $?
done
echo "Starting I2C chip (sensors) drivers: "
for driver in $i2c_chip_drivers; do
echo -n "Starting I2C driver: $driver "
/sbin/modprobe $(echo $driver)
echo_status $?
done
# Set Alarm
echo -n "Configuring sensors: "
sensors -s && sleep 2
echo_status $?
# Start daemons.
echo -n $"Starting sensord: "
daemon sensord -i $interval -l $log_interval
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/sensord
echo
return $RETVAL
}
stop()
{
# Stop daemons.
echo -n $"Shutting down sensord: "
killproc sensord
RETVAL=$?
echo
# Remove modules
drivers=´echo "$i2c_chip_drivers $i2c_bus_drivers" | \
tr -s "[:space:]\n" " "´
echo -n "Removing I2C drivers: $drivers"
/sbin/modprobe -r -q $drivers
echo_status $?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/sensord
return $RETVAL
}
reload()
{
# Reread configuration file
sensors -s
return $?
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status sensord
;;
restart)
stop
start
;;
reload)
reload
;;
condrestart)
[ -e /var/lock/subsys/sensord ] && restart || :
;;
*)
echo "Usage: sensord {start|stop|restart|reload|condrestart|status}"
exit 1
;;
esac
exit $?