[Nut-upsuser] Shutdown problem with Geek Squad GS1285U

Peter Selinger selinger at mathstat.dal.ca
Tue Feb 6 21:21:11 CET 2007


Hi Gary,

the answer is probably "no, this script never gets called with
poweroff". Unless you call it yourself from the command line.

I don't have an Ubuntu system, but usually, there should be a file
called /etc/init.d/halt, or something analogous, which is the last
thing the computer runs before turning off the power. It may also be
called /etc/rc.d/rc0.d/<something>, or /etc/rc.d/rc6.d/<something>,
but usually these are just symbolic links to /etc/init.d/<something>.

Whatever it is called, it is in this script that you have to add the
"upsdrvctl shutdown" code. 

-- Peter

Gary Redden wrote:
> 
> See the poweroff section of the script. My question is:
> "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?"
> 
> 
> 
> Peter Selinger wrote:
> > For NUT to switch off your UPS at the end of the shutdown sequence,
> > you have to edit your shutdown scripts. 
> >
> > See INSTALL, "Configuring shutdowns for low battery events", item 11
> > "Edit your shutdown scripts: add upsdrvctl shutdown".
> >
> > -- Peter
> >
> > Gary Redden wrote:
> >   
> >> 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?
> >>
> >> _______________________________________________
> >> Nut-upsuser mailing list
> >> Nut-upsuser at lists.alioth.debian.org
> >> http://lists.alioth.debian.org/mailman/listinfo/nut-upsuser
> >>
> >>     
> >
> >
> >   
> 
> _______________________________________________
> Nut-upsuser mailing list
> Nut-upsuser at lists.alioth.debian.org
> http://lists.alioth.debian.org/mailman/listinfo/nut-upsuser
> 




More information about the Nut-upsuser mailing list