/usr/local/bin/checkpower
The second half of getting this to work is the following script which is called from cron every 3 minutes. (Change to suite your tastes.)
So if we are on battery more than $SHUTDOWN_SECS, the next time [b]checkpower[/b] is run, it will issue a hibernate command.
So if we are on battery more than $SHUTDOWN_SECS, the next time [b]checkpower[/b] is run, it will issue a hibernate command.
#!/usr/bin/perl use warnings; $ENV{PATH} = '/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin'; my $SHUTDOWN_SECS = 60 * 5; # How long to wait before shutdown my $file = '/var/run/battery_status'; my $batt_time; if (-e $file){ open (FH, "<$file") or die "Couldn't read file: $!"; $batt_time =; chomp($batt_time); print "On battery for ",time()-$batt_time," seconds\n"; if (time() - $batt_time > $SHUTDOWN_SECS){ warn "Shutting down..."; unlink($file); # Clean up warn "Hibernating\n"; system('/usr/local/sbin/hibernate --force'); }else{ print $SHUTDOWN_SECS - (time() - $batt_time), " seconds until shutdown\n"; } }else{ # "Nothing to do"; }