[Nut-upsuser] Shutdown problem with Geek Squad GS1285U
Gary Redden
redden at skybest.com
Tue Feb 6 18:06:55 CET 2007
Nut will monitor the ups and shutdown Linux when the ups goes to low
battery as it should. But the UPS is not shut down so the system will
restart when the power is restored. If I switch the UPS off , restore
power and switch the UPS on the system will restart. I have not been
able to get nut to switch the UPS off after it brings the system down. I
can get the UPS to switch off with upscmd load.off. So the UPS can be
controlled. Here is my SHUTDOWNCMD:
SHUTDOWNCMD "/sbin/shutdown now -P"
I also tried:
SHUTDOWNCMD "/sbin/shutdown now -h"
I found this script in /etc/init.d/nut and changed the paths to upsd and
upsmon and used it.
#! /bin/sh
#
# nut - Script to start and stop Network UPS Tools daemons
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin
NAME=nut
DESC="Network UPS Tools"
DEFAULT=/etc/default/nut
[ -f $DEFAULT ] || exit 0
. $DEFAULT
pid_dir=/var/run/nut
upsmon_pid=${pid_dir}/upsmon.pid
upsd_pid=${pid_dir}/upsd.pid
upsd=/usr/local/ups/sbin/upsd
upsmon=/usr/local/ups/sbin/upsmon
upsdrvctl=/usr/local/ups/bin/upsdrvctl
log=">/dev/null 2>/dev/null"
# Check if /var/run/nut exists and has the correct perms
check_var_directory() {
[ ! -d ${pid_dir} ] && mkdir -p ${pid_dir} \
&& chown root:nut ${pid_dir} \
&& chmod 770 ${pid_dir}
}
start_stop_server () {
case "$START_UPSD" in
y|Y|yes|YES|Yes)
case "$1" in
start)
! $upsdrvctl start >/dev/null 2>&1 && \
echo -n " (upsdrvctl failed)"
start-stop-daemon -S -q -p $upsd_pid -x $upsd >/dev/null 2>&1
;;
stop)
start-stop-daemon -K -o -q -p $upsd_pid -n upsd >/dev/null 2>&1
! $upsdrvctl stop >/dev/null 2>&1 && \
echo -n " (upsdrvctl failed)"
;;
esac
;;
n|N|no|NO|No|*)
return 1
;;
esac
}
start_stop_client () {
case "$START_UPSMON" in
y|Y|yes|YES|Yes)
case "$1" in
start)
start-stop-daemon -S -q -p $upsmon_pid -x $upsmon >/dev/null 2>&1
;;
stop)
start-stop-daemon -K -o -q -p $upsmon_pid -n upsmon >/dev/null
2>&1
;;
esac
;;
n|N|no|NO|No|*)
return 1
;;
esac
}
case "$1" in
start)
echo -n "Starting $DESC:"
check_var_directory
start_stop_server start && echo -n " upsd"
start_stop_client start && echo -n " upsmon"
echo "."
;;
stop)
echo -n "Stopping $DESC:"
start_stop_server stop && echo -n " upsd"
start_stop_client stop && echo -n " upsmon"
echo "."
;;
reload)
$upsd -c reload >/dev/null 2>&1
$upsmon -c reload >/dev/null 2>&1
;;
restart|force-reload)
echo -n "Restarting $DESC:"
start_stop_client stop
start_stop_server stop
sleep 5
check_var_directory
start_stop_server start && echo -n " upsd"
start_stop_client start && echo -n " upsmon"
echo "."
;;
poweroff)
flag=`sed -ne 's#^ *POWERDOWNFLAG *\(.*\)$#\1#p'
usr/local/ups/etc/upsmon.conf`
wait_delay=`sed -ne 's#^ *POWEROFF_WAIT= *\(.*\)$#\1#p'
/etc/default/nut`
if [ -f "$flag" ] ; then
if $upsmon -K >/dev/null 2>&1 ; then
echo "Shutting down the UPS ..."
sleep 1
if $upsdrvctl shutdown ; then
sleep 5
echo -n "Waiting for UPS to cut the power"
else
echo "Shutdown failed."
echo -n "Waiting for UPS batteries to run down"
fi
if [ "$wait_delay" ] ; then
echo " (will reboot after $wait_delay) ..."
sleep "$wait_delay"
/etc/init.d/reboot
fi
else
echo "Power down flag is not set (UPS shutdown not needed)"
fi
else
if [ -z "$flag" ] ; then
echo "##########################################################"
echo "## POWERDOWNFLAG is not defined in /etc/nut/upsmon.conf ##"
echo "## ##"
echo "## Please read the Manual page upsmon.conf(5) ##"
echo "##########################################################"
fi
fi
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|reload|restart|force-reload|poweroff}" >&2
exit 1
;;
esac
exit 0
Since I do not have much knowledge on how the Linux system boots and
shutdown I have spent the last several days searching for how the scrips
/etc/init.d are supposed to work but every thing I have found is a
little different than what I find on my Ubuntu system. Does this script
ever get called with poweroff?
More information about the Nut-upsuser
mailing list