Header Ads

Como hibernar ou suspender o Linux a partir da linha de comando

Shutterstock / Moriz

Hibernar e dormir é para ursos e computadores! Se consumir menos eletricidade é seu objetivo, então este guia mostrará como fazer um pequeno script para hibernar, dormir ou congelar seu computador com segurança a partir da linha de comando.

Hibernação e suspensão no Linux

Hibernar um computador salvará o conteúdo atual da memória do computador (a memória RAM do computador) em disco, especialmente no espaço de troca. Depois disso, a energia será interrompida automaticamente por uma chamada para o hardware e quando você reiniciar o computador, o conteúdo da memória será lido de volta do espaço de troca para a memória principal e você pode continuar a usar o computador exatamente no ponto em que hibernou isso.

Há um desafio quando se trata de hibernar uma instância do Linux usando a linha de comando: você precisará de um espaço de swap suficientemente grande para encapsular todo o tamanho da RAM e, potencialmente, algum extra para o uso normal de swap simultâneo pelos aplicativos. Portanto, se você tiver 8 GB de memória RAM em seu sistema, pode desejar alocar um espaço de swap de 16 a 20 GB para garantir que haja bastante. Se você gostaria de aprender como fazer isso, consulte nosso guia Como criar e habilitar um arquivo de troca na linha de comando do Linux.

Um estado de suspensão é muito semelhante, embora a energia não seja completamente retirada. Sua memória, e às vezes sua CPU, permanecerão funcionando de forma que quando você voltar para a máquina e, por exemplo, pressionar a barra de espaço ou clicar em um botão do mouse (como eventos de ativação), o computador começará a operar novamente no ponto onde você o colocou para dormir. Esses eventos de ativação geralmente podem ser configurados de dentro da BIOS.

O BIOS do seu computador geralmente pode ser acessado durante a inicialização do seu computador, desde que não tenha sido hibernado ou colocado em espera, mas na verdade foi totalmente desligado quando você o usou pela última vez. Freqüentemente, ele pode ser acessado pressionando uma tecla como F2 ou DEL (ou qualquer outra tecla exibida na tela ou disponível no manual do fabricante da placa-mãe) durante a inicialização antecipada de seu sistema (assim que qualquer texto for exibido na tela após pressionar o botão liga / desliga).

Normalmente, há três níveis de suspensão de economia de energia baseados em kernel disponíveis no Linux, fornecidos pelo sistema operacional (ou mais especificamente pelo kernel).

Esses níveis são integrados ao kernel e a disponibilidade deles depende do sistema operacional que está sendo usado. Os níveis são Suspend-To-Idle (apropriadamente denominado s2idle ou freeze), Suspend-To-Memory (mem ou mais corretamente deep) e Suspend-To-Disk (disco). Seu sistema também pode suportar um modo de espera (espera ou superficial). Em breve aprenderemos mais sobre como descobrir quais níveis estão disponíveis em seu sistema e como controlá-los!

Os desktops não apresentam hibernação ou hibernação?

Curiosamente, embora geralmente a suspensão para a memória e a suspensão para o disco sejam disponibilizadas pelo kernel e suportadas pelo sistema, o sistema operacional rodando sobre o kernel irá – com alguma regularidade – deixar de apresentar essas opções em sua GUI / área de trabalho.

Por exemplo, em uma instalação recente do Mint 20 (um sistema operacional moderno baseado no Ubuntu), clonado em um sistema moderno, as seguintes opções estavam disponíveis ao pressionar o botão liga / desliga no GUI / Desktop xcfe:

Faça logout, reinicie, desligue e troque de usuário, mas não entre no modo de espera, espera ou hibernação! Ser capaz de suspender este sistema para a memória ou disco seria, portanto, um grande passo em frente, mesmo que tenhamos que chamar o terminal para fazer isso. A próxima seção explicará como fazer isso, mas vamos primeiro dar uma olhada nas opções disponíveis em seu sistema e o que elas significam.

Se você executar cat / sys / power / state na linha de comando, verá algo semelhante ao seguinte:

Neste sistema em particular, as três opções principais (congelar, mem e disco) são suportadas. Você também pode ver o modo de espera ou seu sistema.

A opção de congelamento, quando definida, iniciará um estado de suspensão leve baseado em software para o seu sistema. O espaço do usuário do Linux será congelado (daí o termo) e todos os dispositivos de E / S serão colocados em um estado de baixa energia. Embora essa opção e estado sejam sempre suportados e limite o uso de energia, é a forma mais leve de parar sua máquina. Se nenhuma outra opção estiver disponível para você, isso ainda pode economizar nas contas de eletricidade, embora não tanto quanto desligar o sistema.

A questão para esta opção / estado torna-se, portanto, sobre a consciência (deixar o sistema em um estado pronto para usar e como foi interrompido e salvar um pouco em vez de encerrar, mas ter que reabrir aplicativos e salvar mais) . Esperançosamente, seu sistema operacional e hardware também suportam outros estados. Caso contrário, considere atualizar ou alterar seu sistema operacional e / ou atualizar seu BIOS e outros firmware de dispositivos de hardware para as versões mais recentes. Alterar as opções relacionadas à energia na BIOS também pode ajudar.

A opção mem, quando definida, iniciará um Suspend-To-Idle, que é idêntico à opção de congelar, ou um Suspend-To-RAM, onde tudo no sistema é colocado em um baixo consumo de energia estado, exceto para a memória. A opção usada (Suspend-To-Idle ou Suspend-To-RAM) depende da configuração do arquivo / sys / power / mem_sleep. Você pode examinar os vários modos desse arquivo simplesmente executando cat / sys / power / mem_sleep na linha de comando do terminal.

De modo geral, eu esperaria que esta opção fosse definida por padrão como deep por padrão (conforme indicado por [code]) em todos os sistemas operacionais Linux, simplesmente porque quando alguém define a opção / sys / power / state como mem, um esperaria que o sistema gravasse o conteúdo na memória (ou seja, Suspend-To-RAM, que é definido usando deep in / sys / power / mem_sleep) em vez do modo Suspend-To-Idle como indicado por s2idle.

Observe também que é possível usar duas maneiras diferentes de Suspend-To-Idle: escrevendo freeze para / sys / power / state ou escrevendo s2idle para / sys / power / mem_sleep e, subsequentemente, escrevendo mem para / sys / power / state.

Como você pode ver, a terminologia usada é um pouco confusa e misturada devido à presença do arquivo / sys / power / mem_sleep. Uma maneira mais fácil de fazer as coisas, e provavelmente a maneira padrão em todos os sistemas operacionais Linux modernos, seria simplesmente deixar / sys / power / mem_sleep definido como deep e gravar freeze em / sys / power / state como Suspend-To-Idle, e escrever mem em / sys / power / state para Suspend-To-RAM.

Finalmente, temos a última opção (desde que o seu sistema não tenha a opção standby, que é uma opção Power-On-Suspend onde a CPU mantém a energia) e que é o disco. Esta opção nos permite suspender para o disco. Basicamente, é a opção Hibernate que descrevemos anteriormente, enquanto Suspend-To-Idle ou Suspend-To-RAM podem ser considerados modos de hibernação. Neste modo, todos os dados na memória são gravados no disco, de modo que a própria memória também possa ser liberada: um desligamento total.

Em resumo, a maneira mais fácil de selecionar qualquer uma das três opções principais de suspensão de energia é ter (ou deixar) / sys / power / mem_sleep definido como profundo, ignorar este arquivo e, em seguida, selecionar nossos modos de suspensão de energia usando / sys / power / state apenas, e escrevendo freeze (Suspend-To-Idle), mem (Suspend-To-RAM) ou disco (Suspend-To-Disk) neste arquivo. Vamos ver como fazer isso com segurança.

Como hibernar, dormir ou congelar

Queremos um script que hiberne, hiberne ou congele o nosso computador com segurança. Por que a menção de segurança? Bem, considere como a gravação congelada em / sys / power / state irá congelar imediatamente o sistema e restaurá-lo para o mesmo estado quando uma tecla for pressionada ou um mouse for clicado (dependendo de tais opções serem habilitadas nas configurações do BIOS). Sua área de trabalho, desbloqueada, ainda está desbloqueada!

Portanto, precisamos de um script que não apenas hiberne, hiberne ou congele nossa máquina, mas também que bloqueie nosso desktop para nós. A implementação disso dependerá do sistema operacional, bem como da área de trabalho / GUI escolhida.

Uma busca rápida em seu mecanismo de busca favorito por [tela] bloqueia a GUI de distribuição do Linux na linha de comando, onde tela é uma palavra / termo de pesquisa opcional, Distribuição do Linux é o nome de seu A distribuição Linux, e GUI é o nome de sua GUI (como xcfe, por exemplo), revelará uma ou mais maneiras de bloquear seu terminal a partir da linha de comando. Para este guia, usaremos Linux Mint 20 executando xcfe.

Definimos nosso script hibernate. sh da seguinte maneira:

 sudo sleep 0.1 # Para obter o disco de eco auth xflock4 sleep 3 | sudo tee / sys / power / state # Requer espaço de troca suficiente 

Na primeira linha, invocamos sudo para habilitar a autenticação em nível de root / super usuário. Simplesmente cobramos sleep 0.1 como um comando fictício. O único propósito aqui é que os comandos sudo subsequentes (como o último) não exijam que entremos na autenticação, pois é meio difícil digitar uma senha em um terminal quando sua tela já está bloqueada 😉

Depois disso, invocamos o sistema operacional e a escolha do comando de bloqueio específico do desktop / GUI / gerenciador de janelas, sendo xflock4 para xcfe no Linux Mint 20. Em seguida, dormimos por 3 segundos usando sleep 3.

Finalmente, escrevemos (usando echo) a palavra disco em / sys / power / state usando tee (consulte o manual para obter mais informações se for de interesse, basicamente tee lê a entrada padrão e grava em um arquivo aqui) e sudo. Isso irá hibernar nosso sistema para o disco (e desligar o computador), desde que tenhamos espaço de troca suficiente, conforme descrito anteriormente neste guia.

Mudar este script para Suspend-To-RAM / Memory agora é fácil: simplesmente troque a palavra disco para mem.

Definimos nosso script sleep. sh da seguinte maneira:

 sudo sleep 0.1 # Para obter auth xflock4 sleep 3 echo deep | sudo tee / sys / power / mem_sleep echo mem | sudo tee / sys / power / state 

Demos um passo extra de escrever profundamente em / sys / power / mem_sleep para manter a segurança de energia e evitar Idle-To-Suspend. Isso só funcionará se deep for uma opção real em seu sistema (lembre-se de executar cat / sys / power / mem_sleep para descobrir os modos de hibernação da memória e garantir que deep seja um deles). Se deep já estiver selecionado como o padrão atual, será mostrado como [deep].

Finalmente, também podemos fazer um script de congelamento da seguinte maneira:

 sudo sleep 0.1 # Para obter auth xflock4 sleep 3 echo freeze | sudo tee / sys / power / state 

Observe que nenhuma gravação adicional de s2idle em / sys / power / mem_sleep é necessária, pois a gravação congelada em / sys / power / state usa automaticamente s2idle (Suspend-To-Idle ) Conforme descrito anteriormente, poderíamos ter escrito s2idle em / sys / power / mem_sleep e, em seguida, escrito mem em / sys / power / state para obter o mesmo resultado, mas essa parece ser uma maneira mais confusa de fazer isso.

Os vários estados de energia listados nos scripts acima, na ordem apresentada (disco > mem > congelar), têm economia de energia do máximo para o mínimo e níveis mais altos colocarão o computador em um estado de suspensão mais profundo.

Também digno de nota é que apenas Suspend-To-Disk (disco) fornece a garantia de que, se de alguma forma a energia do seu sistema cair, seu estado salvo não será afetado e o computador poderá reiniciar no ponto em que você parou. Dito isso, é também o mais lento como E / S de disco – para o tamanho da sua memória – é necessário.

Concluindo

Poder dormir ou hibernar uma máquina local ou remotamente através da linha de comando oferece grande flexibilidade, em vários níveis de economia de energia através de vários modos de suspensão. Tanto os servidores quanto os desktops podem hibernar.

Pode-se suspender um computador para ocioso (s2idle), para a memória (mem) e para o disco (disco). Este guia descreveu as várias maneiras de fazer isso, bem como como isso se relaciona com o hardware subjacente. Os sistemas operacionais regulares, embora suportem hibernação e suspensão, nem sempre anunciam ou expõem essas opções em sua GUI de desktop.

Saber como dar um passo adiante na linha de comando muitas vezes nos salva de não sermos capazes de hibernar ou dormir uma máquina, ou de sermos capazes de hibernar ou dormir essa máquina remotamente. Aproveite!

Isenção de responsabilidade: nenhum computador foi prejudicado nos vários experimentos feitos para este guia 🙂

Nenhum comentário