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

Conteúdo

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

Hibernação e Dormir en Linux

Hibernar um computador salvará o conteúdo atual da memória do computador (a RAM memória no seu computador) para o disco, especialmente para o espaço de troca. Depois disso, a energia será cortada automaticamente por uma chamada para o hardware, e quando eu reinicio o computador, o conteúdo da memória será lido do espaço de troca para a memória principal e você pode continuar a usar o computador exatamente no ponto onde ele 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 troca grande o suficiente para encapsular todo o tamanho da RAM e, potencialmente, algo extra para o uso normal de troca simultânea por aplicativos. Por isso, se tem 8 GB de RAM em seu sistema, é possível que você queira alocar um espaço de troca de 16 uma 20 GB para garantir que haja o suficiente. Se você quiser aprender como fazer isso, veja nosso guia Como criar e habilitar arquivo de troca na linha de comando do Linux.

Um estado de repouso é muito equivalente, mesmo que a energia não seja completamente removida. A memória dele, e às vezes sua CPU, permanecerá sob energia para que quando você retornar à máquina, e como um exemplo pressione a barra de espaço ou clique com o botão do mouse (como eventos desencadeadores), o computador começará a funcionar novamente no ponto em que você o colocou para hibernar. Em geral, esses eventos de gatilho podem ser configurados a partir do BIOS.

Em geral, o BIOS do seu computador pode ser acessado durante a inicialização do computador, contanto que não tenha hibernado ou colocado para dormir, mas estava completamente desligado da última vez que você o usou. Frequentemente, pode ser inserido 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) ao longo do início precoce do seu sistema (assim que algum texto for exibido na tela após pressionar o botão liga / desliga).

Em geral, Existem três níveis de suspensão de economia de energia baseados em kernel disponíveis no Linux, fornecido pelo sistema operacional (ou mais especificamente o kernel).

Esses níveis são integrados ao kernel e sua disponibilidade depende do sistema operacional usado.. Os níveis são Suspender para inativo (apropriadamente chamado s2idle o congelar), Suspender na memória (mem ou mais corretamente profundo) e suspender para o disco (discoteca). Seu sistema também pode suportar um modo de espera (standby o shallow). 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 entram em hibernação ou hibernação??

curiosamente, enquanto a suspensão da memória e a suspensão do disco geralmente estão disponíveis no kernel e são suportadas pelo sistema, o sistema operacional rodando em cima do kernel, com alguma regularidade, não apresenta essas opções em sua GUI / Mesa.

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

Sem suspensão oferecida, hibernar ou em espera

Fechar Sessão, reiniciar, desligar e trocar de usuário, mas não Dormir, Apoio, suporte ni Hibernar! Ser capaz de suspender este sistema na memória ou disco seria um grande passo em frente., mesmo se tivermos que ligar para o terminal para fazer isso. A próxima seção explicará como fazer isso., mas primeiro vamos dar uma olhada nas alternativas disponíveis em seu sistema e o que elas significam.

Se você correr cat /sys/power/state na sua linha de comando, você verá algo equivalente ao seguinte:

congelar memória e opções de disco disponíveis em / sys / potência / Estado

Neste sistema particular, as três opções principais (freeze, mem and disk) é compatível. Você também pode ver standby ou seu sistema.

a freeze Opção, quando definido, irá iniciar um estado de suspensão leve apenas por software para o seu sistema. O espaço do usuário do Linux vai congelar (daí o termo) e todos os dispositivos E / S será colocado em um estado de baixo consumo de energia. Embora esta opção e status sejam sempre suportados e limitem o uso de energia, é a maneira mais leve de parar sua máquina. Se você não tem outras opções disponíveis, isso ainda pode economizar nas contas de eletricidade, mesmo que não tanto quanto desligar o sistema.

Por isso, a questão para esta opção / estado se transforma em consciência (deixe o sistema em um estado pronto para uso e à esquerda e economize um pouco em vez de desligá-lo, mas tendo que reabrir aplicativos e economizar mais). Esperançosamente, seu sistema operacional e hardware também são compatíveis com outros estados. Sim, não é assim, considere atualizar ou mudar seu sistema operacional e / ou atualize o firmware de seu BIOS e outros dispositivos de hardware para suas versões mais recentes. Alterar as alternativas associadas à alimentação no BIOS também pode ajudar.

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

Em termos gerais, Eu esperaria que essa opção fosse padronizada para deep por padrão (como indicado [code]) em todos os sistemas operacionais Linux, simplesmente porque quando se define o /sys/power/state opção a mem, seria de se esperar que o sistema gravasse o conteúdo na memória (Em outras palavras, Suspend-To-RAM, que se configura usando deep sobre /sys/power/mem_sleep) em vez do modo Suspend-To-Idle, conforme indicado s2idle.

Observe também que, por isso, é possível usar duas maneiras diferentes de suspender para inativo: ou escrevendo freeze para /sys/power/state, ou escrevendo s2idle para /sys/power/mem_sleep e depois escrevendo mem para /sys/power/state.

Como você pode ver, a terminologia usada é um pouco confusa e misturada devido à presença do /sys/power/mem_sleep procedimentos. Uma maneira mais fácil de fazer as coisas, e presumivelmente o padrão em todos os sistemas operacionais Linux modernos, iria apenas sair /sys/power/mem_sleep ajustado para deep e escreve freeze para /sys/power/state um Suspend-To-Idle, e escrever mem para /sys/power/state um suspensor um RAM.

Em conclusão, nós temos a última opção (contanto que seu sistema não tenha o standby opção, que é uma alternativa Power-On-Suspend onde a CPU mantém a energia) e que é disk. Esta opção ativa Suspend-To-Disk. Simplesmente, é a opção Hibernate que descrevemos anteriormente, enquanto Suspend-To-Idle ou Suspend-To-RAM podem ser considerados modos de suspensão. Neste modo, todos os dados na memória são gravados no disco, então a memória também pode se libertar de energia: um desligamento completo.

Em resumo, a maneira mais fácil de escolher qualquer uma das três opções principais de suspensão elétrica é ter (ou sair) /sys/power/mem_sleep ajustado para deep, ignore este arquivo e, em seguida, selecione nossos modos de suspensão de energia usando /sys/power/state só, e por escrito freeze (Suspender para inativo), mem (Suspender um RAM), o disk (Suspend-para-disco) para este arquivo. Vamos ver como fazer isso com segurança.

Como hibernar, dormir o congelar

Queremos ter um script que hiberna, suspender ou congelar nosso computador com segurança. Por que a menção de segurança? Nós vamos, considere como escrever freeze para /sys/power/state irá congelar imediatamente o sistema e restaurá-lo para o mesmo estado exato quando uma tecla é pressionada ou um clique do mouse (dependendo se tais opções são ativadas através da configuração do BIOS). A mesa dele, desbloqueado, ainda está desbloqueado!

Por isso, precisamos de um script que não apenas hiberne, suspender ou congelar nossa máquina, mas também bloqueia nosso desktop. A implementação disso dependerá do sistema operacional, bem como a área de trabalho / GUI escolhida.

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

Nós definimos nosso hibernate.sh script da próxima maneira:

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

Na primeira linha invocamos sudo para permitir a autenticação em nível de superusuário / raiz. Nós simplesmente faturamos sleep 0.1 como um comando fictício. O único propósito aqui é que os comandos subsequentes de suor (como o último) não exigir que entremos na autenticação, uma vez que é um pouco 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 da área de trabalho / GUI / gerenciador de janela, ser xflock4 para xcfe en Linux Mint 20. A seguir, nós dormimos durante 3 segundos usando sleep 3.

Em conclusão, nós escrevemos (usando echo) palavra disk para /sys/power/state usando tee (Assistir man tee para mais informações se for do seu interesse, basta fazer as leituras da entrada padrão e gravar no arquivo aqui) e sudo. Isso irá hibernar nosso sistema no disco (e desligue o computador) sempre que temos espaço de troca suficiente, conforme descrito anteriormente neste guia.

Cambiar este script um Suspend-To-RAM / A memória agora é fácil: basta trocar a palavra disk para mem.

Nós definimos nosso sleep.sh script da próxima maneira:

sudo dormir 0.1  # To get auth
xflock4
sleep 3
ecoar profundamente | sudo tee /sys/power/mem_sleep
echo mem | sudo tee /sys/power/state

Demos um passo a mais ao escrever deep para /sys/power/mem_sleep para estar no lado seguro do poder e para evitar inatividade para suspender. Isso só vai funcionar se deep é uma alternativa real em seu sistema (lembre-se de correr cat /sys/power/mem_sleep para descobrir modos de hibernação de memória e garantir deep É um deles). E deep já está selecionado como o padrão atual, vai mostrar como [deep].

Em conclusão, nós também podemos fazer um freeze script da próxima maneira:

sudo dormir 0.1  # To get auth
xflock4
sleep 3
eco congelar | sudo tee /sys/power/state

Observe que não há gravação adicional de s2idle para /sys/power/mem_sleep é necessário, desde o freeze escrever para /sys/power/state usar automaticamente s2idle (Suspender para inativo). Conforme descrito anteriormente, poderíamos ter escrito s2idle para /sys/power/mem_sleep e então escrito mem para /sys/power/state em seu lugar, para alcançar o mesmo resultado, mas esta parece ser uma maneira mais confusa de fazer isso.

Os múltiplos estados de energia listados nos scripts anteriores, na ordem em que são apresentados (disk > mem > freeze) apresentam economia de energia da mais alta para a mais baixa, e níveis mais altos colocarão o computador em um estado de hibernação mais profundo.

Vale ressaltar que apenas Suspend-To-Disk (disk) fornece a garantia de que se a energia do seu sistema cair de alguma forma, seu estado salvo não será afetado e o computador pode retomar de onde parou. Tendo dito isto, também é o mais lento, desde o E / Disco S, para o tamanho da sua memória, é necessária.

Final

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 por meio de vários modos de hibernação. Tanto os servidores quanto os desktops podem hibernar.

Um computador pode ser suspenso para inativo (s2idle), para a memória (mem) e para o disco (discoteca). Este guia descreve as várias alternativas para fazer isso, bem como como se relaciona com o hardware subjacente. Sistemas operacionais comuns, mesmo quando suportam hibernação e sono, eles nem sempre anunciam ou expõem essas opções em sua GUI de desktop.

Saber como dar um passo adiante na linha de comando geralmente nos salva de não sermos capazes de hibernar ou colocar a máquina em espera., o poder de hibernar ou colocar a máquina em espera remotamente. Desfrutar!

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

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.