Fácil. Primeiro você precisa verificar se o seu computador suporta o Wakup no RTC. A maioria dos computadores criados nos últimos 10 anos suporta esse recurso. Primeiro você precisa ativar o RTC nas configurações da BIOS, isso é feito no processo de inicialização. Na minha BIOS é possível configurar os sinais S que o despertar deve responder. Como gosto de economizar energia, deixo a energia do meu computador desligada entre as partidas automáticas e os desligamentos.
Após a configuração do BIOS, inicialize o Linux e execute o comando dmesg |grep rtc
. Isso informa se você tem o RTC ativado ativado. Meu resultado dá:
~$ dmesg |grep rtc
[ 0.962976] rtc_cmos 00:03: RTC can wake from S4
[ 0.963096] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0
[ 0.963119] rtc0: alarms up to one month, 242 bytes nvram
Para definir o tempo de ativação, você precisa ser root. Como comando de problema raiz:
echo 0 > /sys/class/rtc/rtc0/wakealarm
O comando acima deve ser usado antes de você gravar um novo horário de ativação no arquivo, caso contrário, o recurso de ativação será buisy. Se você quiser que seu computador inicie em 10 minutos no futuro comando de edição:
echo 'date '+%s' -d '+ 10 minutes'' > /sys/class/rtc/rtc0/wakealarm
Verifique se o alarme está definido emitindo cat /sys/class/rtc/rtc0/wakealarm
. Se você receber um monte de dígitos, significa que o alarme está configurado e, se o arquivo estiver vazio, há algo errado com a data.
Para verificar um comando de edição de formato legível mais humano cat /proc/driver/rtc
.
Então, se você quer que seu computador inicie 2 minutos depois que alguém o desligar, execute um script parecido com este no seu crontab (este script exigirá acesso root, então esteja ciente):
#!/bin/bash
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo 'date '+%s' -d '+ 2 minutes'' > /sys/class/rtc/rtc0/wakealarm
Salve o planeta. :)