Em 12.04 usei sleepd
para suspender a máquina quando a bateria estava fraca ou a máquina estava inativa.
Apesar de o sleepd não ser empacotado para o Ubuntu 14.04, e até mesmo ser órfão pelo seu desenvolvedor, é possível compile e instale-o você mesmo.
Instalação no Ubuntu 12.04:
sudo apt-get install sleepd
Edite o arquivo /etc/default/sleepd
e defina o seguinte:
# -E Do not poll events (since they weren't working for me).
# -c 60 Poll every 60 seconds.
# -u 900 Sleep after 15 minutes idle time when on battery,
# -U 3600 or 60 minutes when on AC power,
# -b 3 or when battery power drops below 3%.
# -H (optional) Use upower instead of ACPI.
PARAMS="-E -c 60 -u 900 -U 3600 -b 3"
Em seguida, reinicie o daemon:
sudo service sleepd restart
Ele também tem opções para ficar acordado se houver atividade de rede, mas eles pararam de funcionar para mim.
Na minha máquina, aparentemente a ACPI nem sempre estava reportando a temperatura corretamente, então eu precisava adicionar -H
para dizer ao sleepd para ler as temperaturas da upstream em vez da ACPI. Eu descobri as leituras incorretas, após alguns syspends inesperados, adicionando -v
e observando o arquivo de log com tail -f /var/log/*log | grep --line-buffered sleepd
.
(Eu tive um bug estranho em um laptop com 12.04 que a máquina iria acordar de novo imediatamente após a suspensão, mas apenas se sleepd estava suspendendo devido a bateria fraca, não devido ao tempo ocioso. Espero que você não terá que experiência também! O problema nunca aconteceu em 14.04.)