Difference between revisions of "Auto hibernate after suspend"

From Sabayon Wiki
Jump to: navigation, search
(2 intermediate revisions by the same user not shown)
Line 2: Line 2:
  
 
To get this done we can use rctwake which is a part of the pm-utils package. All we have to do is to add a script in the '/etc/pm/sleep.d' directory. We name the file '0099autohibernate'. The numbers at the start tell the pm-utils that the script is executed first on suspend '00' and on wake '99'.
 
To get this done we can use rctwake which is a part of the pm-utils package. All we have to do is to add a script in the '/etc/pm/sleep.d' directory. We name the file '0099autohibernate'. The numbers at the start tell the pm-utils that the script is executed first on suspend '00' and on wake '99'.
 +
 +
 +
{{Console| <pre class="clear"> nano /etc/pm/sleep.d/0099autohibernate </pre>}}
  
  
Line 40: Line 43:
  
  
Dont forget to set the executable flag for the script.
+
Save the File by pressing Ctrl+o and exit nano by pressing Ctrl+x! Dont forget to set the executable flag for the script.
  
  

Revision as of 10:54, 18 February 2013

The most laptops are configured to suspend after a period of inactivity or when the laptop lid is closed. The standard suspend-to-ram method keeps many functions of the computer still alive and keeps consuming battery. To avoid running into low battery status while sleeping it would be a good idea to send the computer to hibernate after a defined period.

To get this done we can use rctwake which is a part of the pm-utils package. All we have to do is to add a script in the '/etc/pm/sleep.d' directory. We name the file '0099autohibernate'. The numbers at the start tell the pm-utils that the script is executed first on suspend '00' and on wake '99'.


 nano /etc/pm/sleep.d/0099autohibernate 


File: /etc/pm/sleep.d/0099autohibernate
#!/bin/bash
# Script name: /etc/pm/sleep.d/0099autohibernate
# Toggle hibernation after a defined period of sleep

curtime=$(date +%s)

# Define the time until hibernation in seconds
autohibernate=7200

echo "$curtime $1" >>/tmp/autohibernate.log
if [ "$1" = "suspend" ]
then
    # Suspending.  Record current time, and set a wake up timer.
    echo "$curtime" >/var/run/pm-utils/locks/rtchibernate.lock
    rtcwake -m no -s $autohibernate
fi

if [ "$1" = "resume" ]
then
    # Coming out of sleep
    sustime=$(cat /var/run/pm-utils/locks/rtchibernate.lock)
    rm /var/run/pm-utils/locks/rtchibernate.lock
    # Did we wake up due to the rtc timer above?
    if [ $(($curtime - $sustime)) -ge $autohibernate ]
    then
        # Then hibernate
        rm /var/run/pm-utils/locks/pm-suspend.lock
        /usr/sbin/pm-hibernate
    else
        # Otherwise cancel the rtc timer and wake up normally.
        rtcwake -m no -s 1
    fi
fi


Save the File by pressing Ctrl+o and exit nano by pressing Ctrl+x! Dont forget to set the executable flag for the script.


 chmod +x /etc/pm/sleep.d/0099autohibernate 


With this done your computer should go to hibernation after 2 hours of sleep (as we defined 7200 seconds in the script).

Sources

SuperUser: How to hibernate after a period of sleep