![Fancontrol запускается вручную, но не работает как служба](https://rvso.com/image/1416347/Fancontrol%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E%2C%20%D0%BD%D0%BE%20%D0%BD%D0%B5%20%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%B5%D1%82%20%D0%BA%D0%B0%D0%BA%20%D1%81%D0%BB%D1%83%D0%B6%D0%B1%D0%B0.png)
Когда fancontrol запускается из терминала, то все работает нормально.
# fancontrol
Loading configuration from /etc/fancontrol ...
Common settings:
INTERVAL=2
Settings for /sys/devices/platform/it87.656/hwmon/hwmon[[:print:]]*/device/pwm1:
Depends on /sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon[[:print:]]*/device/temp1_input
Controls /sys/devices/platform/it87.656/hwmon/hwmon[[:print:]]*/device/fan1_input
MINTEMP=17
MAXTEMP=53
MINSTART=140
MINSTOP=50
MINPWM=0
MAXPWM=255
Settings for /sys/devices/platform/it87.656/hwmon/hwmon[[:print:]]*/device/pwm3:
Depends on /sys/devices/pci0000:00/0000:00:18.3/hwmon/hwmon[[:print:]]*/device/temp1_input
Controls /sys/devices/platform/it87.656/hwmon/hwmon[[:print:]]*/device/fan2_input
MINTEMP=17
MAXTEMP=55
MINSTART=140
MINSTOP=50
MINPWM=0
MAXPWM=255
Enabling PWM on fans...
Starting automatic fan control...
Однако при запуске fancontrol как службы (во время или после загрузки) происходит сбой.
# service fancontrol start
[ ok ] Starting fan speed regulator: fancontrol.
# service fancontrol status
[FAIL] fancontrol is not running ... failed!
В чем разница между запуском fancontrol как службы и ручным запуском, который приведет к сбою?
Скрипт инициализации Debian Wheezy Fancontrol
#! /bin/sh
### BEGIN INIT INFO
# Provides: fancontrol
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: fancontrol
# Description: fan speed regulator
### END INIT INFO
. /lib/lsb/init-functions
[ -f /etc/default/rcS ] && . /etc/default/rcS
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/fancontrol
DESC="fan speed regulator"
NAME="fancontrol"
PIDFILE=/var/run/fancontrol.pid
CONF=/etc/fancontrol
test -x $DAEMON || exit 0
case "$1" in
start)
if [ -f $CONF ] ; then
if $DAEMON --check 1>/dev/null 2>/dev/null ; then
log_daemon_msg "Starting $DESC" "$NAME"
start-stop-daemon --start --quiet --background --pidfile $PIDFILE --startas $DAEMON
log_end_msg $?
else
log_failure_msg "Not starting fancontrol, broken configuration file; please re-run pwmconfig."
fi
else
if [ "$VERBOSE" != no ]; then
log_warning_msg "Not starting fancontrol; run pwmconfig first."
fi
fi
;;
stop)
log_daemon_msg "Stopping $DESC" "$NAME"
start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --startas $DAEMON
rm -f $PIDFILE
log_end_msg $?
;;
restart)
$0 stop
решение1
Чувствую себя глупо, надо было больше исследовать. Вот ответ на всякий случай, если я что-то напутаю или у кого-то еще будет такая же проблема. Также большое спасибо @Fiisch за совет и указание правильного направления.
При запуске fancontrol через #service fancontrol start
или #fancontrol
ошибки /usr/sbin/fancontrol не выводятся. Из-за ограничений материнской платы мои датчики определены как абсолютные пути. Поэтому я запустил /usr/sbin/fancontrol. Это вызывает ошибку
Configuration is too old, please run pwmconfig again
Поэтому я решил взглянуть на /usr/sbin/fancontrol, чтобы узнать, почему. Я нашел причину в строках 302-307:
# Check for configuration change
if [ -z "$DEVPATH" -o -z "$DEVNAME" ]
then
echo "Configuration is too old, please run pwmconfig again" >&2
exit 1
fi
Это просто простой детектор изменения конфигурации! поскольку я указал абсолютные пути для своих датчиков, это не только не было необходимо, но и фактически вызывало ошибку. Поэтому я просто закомментировал это.
## Check for configuration change
#if [ -z "$DEVPATH" -o -z "$DEVNAME" ]
#then
# echo "Configuration is too old, please run pwmconfig again" >&2
# exit 1
#fi
Вот и все! Теперь fancontrol работает отлично и запускается при загрузке.