Desligando e ligando o Linux automaticamente usando rtcwake

image_pdfimage_print

Para colocar o seu PC Linux em modo de suspensão ou hibernação e fazê-lo acordar automaticamente em um horário específico, você pode facilmente fazer isso com o comando rtcwake, incluído por padrão com a maioria dos sistemas Linux (caso não existe, basta instalá-lo; no Debian, utilize o comando “apt-get install rtcwake”). Isso pode ser útil se você quiser que seu computador faça algo em um horário específico, mas não quer que ele fique ligado o tempo todo consumindo energia desnecessariamente. Por exemplo, você poderia colocar seu computador para dormir à noite e e acordá-lo antes de você, para realizar alguns downloads.

Abra seu terminal e execute:

rtcwake

Ele mostrará as opções disponíveis. A flag -m definirá o modo de economia de energia que você deseja:

standby – pequena economia de energia e reinício do sistema de forma rápida
mem – suspender para a memória RAM
disk – suspender para o disco. Seu PC será desligado e reiniciado da forma que estava quando ligado e o consumo de energia é quase 0.
off – desligar o computador completamente

Lembrando que o comando rtwcake exige permissões de root para executar.

Mostramos a seguir um exemplo. Neste exemplo, estamos colocando o computador para hibernar e ligar somente as 11 horas e 7 minutos (o número 1493820420 é a reprentação deste horário no formato que o Linux entende) :

rtcwake -u -m disk -t 1493820420

Para você não precisar saber fazer o cálculo do número mostrado acima, você pode passar o seguinte complemento no comando, que ele já faz o cálculo no formato entendido pelo sistema:

rtcwake -u -m disk -t `date --date 11:07 +%s`

Só há um problema nesse caso: se você definir um horário anterior à hora atual, ele não executará, pois ele não executa com hora retroativa. Portanto, se você quiser, por exemplo, definir um horário de religamento para o dia seguinte às 11:07, você poderia usar o comando a seguir:

rtcwake -u -m disk -t `date +\%s -d 'tomorrow 1107'`

Você também pode usar  o operador && para executar um comando específico após o rtcwake acordar o sistema do modo de suspensão. Por exemplo, o seguinte comando suspende o computador, e acorda 120 segundos (2 minutos) depois e em seguida, abre o navegador Firefox:

rtcwake -m mem -s 120 && firefox

Agora que você já sabe utilizar o rtcwake, você pode adicioná-lo ao cron para que ele seja executado automaticamente em um determinado horário. Suponhamos que você deseje hibernar seu computador de segunda a quinta entre as 22:00 e as 9:00 da manhã e na sexta à partir das 22:00, acordando somente na segunda às 9:00. Nesse caso, você acrescentaria duas linhas no cron, da seguinte forma (para editar o cron, o comando é “crontab -e”):

0 22 * * 1-4 /usr/sbin/rtcwake -u -s 36000 -m disk
0 22 * * 5 /usr/sbin/rtcwake -u -s 208800 -m disk

Repare duas coisas no agendamento acima:

1 – Usamos o formato de segundos, em vez de usar o formato de hora certa. Mas isso não faz diferença. Se quiser, pode usar o formato de hora certa (opção -t).

2 – Repare que colocamos o caminho completo do comando: /usr/sbin/rtcwake (esse caminho pode varia de distribuição para distribuição, sendo que no Debian é o que está mostrado; se estiver em dúvida e quiser saber o caminho correto, use o comando “whereis rtcwake”). É necessário se colocar o caminho completo do comando no cron, pois senão, ele não executará o comando.

 

Gostou da dica? Deixa seu comentário, assine nossa newsletter e curta nossa página no Facebook!

Gostou? Tire um minutinho e dê sua contribuição para Drall Dev Community no Patreon!