Como posso suspender / hibernar na linha de comando?


Respostas:


312

Tradicionalmente, o ubuntu suportava um método bastante contundente de suspensão e hibernação. Nem se integrava bem a outros aplicativos e às vezes nem funcionava em algumas máquinas. O novo método não requer raiz e notifica todos os aplicativos que estão ouvindo eventos de energia.

Método Systemd

A partir do Ubuntu 16.04, a systemctlchamada deve ser usada (consulte o comando Suspender no Ubuntu 16.04 )

systemctl suspend

e

systemctl hibernate

Novo método

Veja a resposta aqui nesta página de Adam Paetznick sobre o uso do dbus . Idealmente, você criaria um ~/bin/suspendatalho / script que facilita o uso dessa ação.

Para uso sobre ssh, você deve modificar as regras do kit de políticas, conforme descrito por Peter V. Mørch

Método antigo

De acordo com o Fórum do Ubuntu, você pode usar os seguintes comandos:

pmi action suspend

e

pmi action hibernate

Isso requer que você instale o pacote de interface de gerenciamento de energia (não testado).

sudo apt-get install powermanagement-interface

Eu também encontrei os comandos sudo pm-suspende sudo pm-hibernatepara trabalhar no meu netbook.


21
pm-suspend e pm-hibernate funcionam para mim e é fácil. Requer sudo, mas tudo bem. (Ideia PMI encontrado antes, mas a instalação de um pacote para usar suspender é bem ruim ...)
user1034

1
Observe que você precisa apt-get install powermanagement-interfaceexecutar o pmi.
Nealmcb

1
Em 11h10, apenas pm- * funciona, também com interface powermanagament-adicionada
Omegafil 13/02/12

1
não funciona com o meu ubuntu 12.10. depoisapt-get install powermanagement-interface
alguma coisais

1
novo método agora é dividido ver unix.stackexchange.com/questions/153099/...
ijk

188

A maneira mais amigável para o gnomo é usar o dbus.

dbus-send --system --print-reply \
    --dest="org.freedesktop.UPower" \
    /org/freedesktop/UPower \
    org.freedesktop.UPower.Suspend

Há duas vantagens nesse comando pm-suspend.

  1. Ele bloqueará sua tela (após reiniciar) se você tiver essa opção selecionada no gnome.

  2. Ele não requer privilégios de root; portanto, é fácil adicioná-lo como um atalho de teclado, por exemplo.

Conforme mencionado nos comentários, troque o Suspendna última linha para Hibernatecriar um comando de hibernação:

dbus-send --system --print-reply \
    --dest="org.freedesktop.UPower" \
    /org/freedesktop/UPower \
    org.freedesktop.UPower.Hibernate

Se a hibernação for lançada, Error org.freedesktop.UPower.GeneralError: not authorizedseu usuário poderá não ter permissão para hibernar. Edite ou crie /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pklapara que contenha a seguinte seção: (origem)

[Re-enable hibernate by default]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

Isso foi testado no UbuntuGnome 14.04 .

Nota: Isso é basicamente o mesmo que a resposta do qbi, mas atualizado para funcionar com versões mais recentes do Ubuntu, além de incluir o hibernate.


15
Sua resposta realmente deve ser a primeira. É uma maneira gnome não raiz de não instalar pacotes. Gostar!
turbo

11
Para Hibernate, você pode simplesmente substituir a última linha comorg.freedesktop.UPower.Hibernate
Sheharyar

2
no meu 13.10 ele funciona. no entanto, a tela não é bloqueada ao continuar, mesmo que em "Segurança e privacidade", "Exigir minha senha ao acordar de Suspender" esteja ativado.
andreas-h

3
Não funcionou para mim (Gnome 3.12, Ubuntu 14.04). Parece que a interface [UPower.Suspend] foi removido, de acordo com bugs.launchpad.net/ubuntu/+source/gnome-power-manager/+bug/...
Gui Ambros

4
A interface de suspensão foi movida para o logind; askubuntu.com/questions/652978
Khurshid Alam

58

Inglês

Se você deseja que seu computador seja suspenso em uma hora, porque você quer ir para a cama ouvindo sua estação de rádio favorita, abra o terminal e digite:

sudo bash -c "sleep 1h; pm-suspend"

e o seu computador adormecerá em 1 hora. Quando você acorda, ele mantém suas imagens abertas e todas as suas coisas.

Você pode substituir 1hpelo que deseja: hpor horas, mminutos, ssegundos, ddias.

Boa noite!

Français

Se você vai justificar que seu coordenador se encontrará em um veículo em parceria, que você irá endormir em sua rádio preferida preferida, ouvir Terminal e tapes:

sudo bash -c "sleep 1h; pm-suspend"

et votre ordinateur s'endormira dans une heure. Quando você deseja recuperar, a aura conservada no memória de seus aplicativos ou favoritos.

Você pode substituir o 1hque deseja: hpara os momentos, mpara os minutos, spara os segundos, dpara os dias.

Bonne nuit!

Espanhol

Se você suspender o computador em uma hora, por que isso ocorre quando você escuta a estação de rádio favorita, apenas abre o terminal e escreve:

sudo bash -c "sleep 1h; pm-suspend"

e você calculou se dormia em 1 hora. Se você quiser, todos os itens estão abertos para todas as imagens e todos os outros.

Puedes reemplazar 1hpor who whoees: hpara horas, mpara minutos, spara segundos, dpara días.

¡Buenas noches!


Esse é o meu caso de uso que estou procurando! Afik PM- * pode ser executado sem permissões de superusuário
Rux

31

Para Ubuntu 12.04 LTS e Ubuntu 13.04

Para obter a hibernação:

sudo pm-hibernate

Para obter Suspender:

sudo pm-suspend

"sudo pm-suspend" não está funcionando no mint 13 mate :(
rsjethani

Sim, acho que esse pacote não foi instalado. procure esses pacotes em sináptico.
23412 #

2
A desvantagem deste método é que, se você estiver usando a GUI, o pm-suspend NÃO bloqueará sua sessão, o que pode ser inseguro.
Raúl Salinas-Monteagudo

1
Também funciona no ubuntu 15.10.
Searene

1
funciona em 14.04 lts
Vitaly Zdanevich 26/02

22

Você pode usar o arquivo /sys/power/statepara fazer isso. Primeiro descubra quais estados são suportados:

user@linux:_> cat /sys/power/state
standby mem disk

root@linux:~> echo -n mem > /sys/power/state  # suspend to ram
root@linux:~> echo -n disk > /sys/power/state  # suspend to disk

ou via dbus:

# Suspender dbus-send --session --dest = org.gnome.PowerManager \ --type = method_call --print-reply --reply-timeout = 2000 \ / org / gnome / PowerManager org.gnome.PowerManager.Suspend # Hibernar dbus-send --session --dest = org.gnome.PowerManager \ --type = method_call --print-reply --reply-timeout = 2000 \ / org / gnome / PowerManager org.gnome.PowerManager.Hibernate

De acordo com esta entrada na barra de ativação, a interface acima foi removida. Portanto, não funcionaria mais no Ubuntu.


A primeira idéia me deu: "bash: echo: erro de gravação: argumento inválido" A idéia do Dbus fornece a saída: "Erro org.freedesktop.DBus.Error.UnknownMethod: Método" Suspend "com assinatura" "na interface" org.gnome.PowerManager " não existe "
user1034 9/08/10

Eu adicionei uma pequena explicação para /sys/power/statetudo. Além disso, o método dbus foi removido do Ubuntu para que não funcione mais.
QBI

$ sudo echo -n mem > /sys/power/state-bash: /sys/power/state: Permission denied
Hubro

3
Isso funciona muito bem. Para pessoas com problemas com esse método ao usar o sudo, o "canal para arquivo", também conhecido como ">", está sendo executado no seu shell atual, portanto, não obtém privilégios de superusuário enquanto o eco era. Você precisará usar sudo -iprimeiro ou canalizar da seguinte sudo teemaneira:echo mem | sudo tee /sys/power/state
RandomInsano

12

Para desligar um sistema (14.04) a partir da linha de comando (ou atalho de teclado), use:

dbus-send --system --print-reply --dest="org.freedesktop.login1" /org/freedesktop/login1 org.freedesktop.login1.Manager.PowerOff boolean:true

Eu descobri isso brincando com o gdbus, que pode listar as interfaces disponíveis:

Para listar os serviços disponíveis no barramento:

dbus-send --system --dest=org.freedesktop.DBus --type=method_call --print-reply /org/freedesktop/DBus org.freedesktop.DBus.ListNames

Para encontrar os métodos:

gdbus introspect --system --dest org.freedesktop.login1 --object-path /org/freedesktop/login1 --recurse

12

desde 15.04 systemD é o sistema init padrão, portanto, há um novo comando a ser usado:

systemctl suspend

Estou usando o Xubuntu 15.04. O comando systemctl suspendsuspende o computador, mas não faz com que a tela seja bloqueada, mesmo que eu tenha marcado a caixa de seleção "Bloquear tela quando o sistema estiver inativo" em Configurações -> Power Manager -> Segurança. Alguém faz algum ideia do porque?
Teemu Leisti

Eu atualizei para o Xubuntu 16.04. O comando systemctl suspendainda suspende o computador. Agora, também faz com que a tela seja bloqueada, se e somente se a caixa de seleção "Bloquear tela quando o sistema estiver inativo" em Configurações -> Power Manager -> Segurança está marcada.
Teemu Leisti

8

A resposta dbus-send de Adam Paetznick não funcionou como lúcido para mim; a máquina acordou desbloqueada, embora o gnome-power-manager esteja configurado para bloquear a tela ao acordar. Quero que a tela seja bloqueada na ativação e constatei que o seguinte faz isso:

$ gnome-screensaver-command --lock && pmi action hibernate

Eu imagino que isso não depende da configuração do gnome, mas não testei isso.


Agradável. Ou xscreensaver-command --lockconforme o caso.
phyzome

3

Nova interface

… Que funciona em 15.10 Wily, e possivelmente Utopic e Vivid.

dbus-send --print-reply --system                         \
    --dest=org.freedesktop.login1                        \
    /org/freedesktop/login1                              \
    org.freedesktop.login1.Manager.Suspend boolean:true

Prestativamente, isso não requer sudo, ao contrário do pm-suspendcomando.


Meu XPS 13 9350 com Debian / Gnome estava com problemas de suspensão / hibernação ao fechar a tampa. Depois de executar este comando (e o equivalente à hibernação), ele entrou em suspensão (e hibernação) e agora fecha e abre a tampa como esperado!
Victor Schröder

1

Veja como colocar uma máquina remota em espera por ssh:

ssh -t 192.168.1.4 'sudo nohup &> / dev / null bash -c "(suspensão 1; echo -n mem> / sys / power / state) &"'
Senha de x@192.168.1.4: 
[sudo] senha para x: 
Conexão com 192.168.1.4 fechada.

/ sys / power / state funciona no Ubuntu 13.10. pmi dá erro Dbus.


0

Pessoalmente, tenho experimentado o método pmi. No entanto, quando eu tentei isso, eu tenho uma mensagem de erro: Error org.freedesktop.DBus.Error.Spawn.ChildExited: Launch helper exited with unknown return code 1. No entanto, há uma solução alternativa na 3ª comentário de este relatório de erro , o que parece ter funcionado para mim (estou usando o Ubuntu 13.03).


Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
fossfreedom

0

Atualização para quem, como eu, ainda trabalha nos sistemas KDE / Ubuntu 14.04. Bloquear o uso qdbuse suspender o uso dbus. Comando completo:

qdbus org.freedesktop.ScreenSaver /ScreenSaver Lock && dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

Para hibernar, ou seja, suspender para o disco rígido em vez da RAM, substitua 'Suspend' no final do comando por 'Hibernate'.

Para bloquear a tela sem suspender, xscreensaver-command -lockfuncionará, se você digitar apenas 1 hífen para a opção '-lock' e apenas se o protetor de tela estiver em execução. Na verdade, não é um comando muito útil. O uso i3locké mais fácil, mas você não obterá uma caixa de diálogo de login limpa para voltar ao trabalho, como fará quando usar qdbus.


0

O seguinte funciona para mim no 16.04 (com área de trabalho do Gnome):

gnome-screensaver-command --lock && compsleep

Também o instalei como um atalho de teclado personalizado através do painel de configurações do Gnome como teclas "Shift-Super-X".

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.