pm-suspend vs systemctl suspend?

10

Para distribuições Linux usando systemd, existe uma diferença prática entre esses dois comandos?

  • systemctl suspend
  • pm-suspend

Qual devo usar ou preferir?

Evan Carroll
fonte

Respostas:

16

Em resumo, você geralmente prefere o modo de suspensão integrado à sua distribuição. Para distribuições enviadas para o systemd, isso normalmente systemctl suspend.

Por exemplo, o wiki do Arch Linux diz :

O systemd fornece comandos nativos para suspensão, hibernação e suspensão híbrida, consulte "Gerenciamento de energia com o systemd" para obter detalhes. Essa é a interface padrão usada no Arch Linux.

E para o Debian Jessie :

Com o systemd, pm-utilse seus ganchos não são mais usados, em vez disso, existe systemd-suspend.


A razão pela qual você deseja manter o que a sua distribuição usa é que os pacotes deles que se preocupam com suspensão / retomada enviarão scripts de gancho que se integram a pm-utils( /usr/lib/pm-utils/sleep.d) ou systemd( /usr/lib/systemd/system-sleep/), portanto, você deve usar a mesma interface para ter todas as informações adequadas. ganchos funcionam como esperado.

Além disso, as distros normalmente conectam o método de suspensão / hibernação adequado ao ACPI para eventos de hardware, ambientes de área de trabalho (para botões de desligamento que permitem suspensão / hibernação) e com protetores de tela / bloqueios, etc.


Ambos pm-suspende systemd-suspendusar normalmente as mesmas interfaces para realmente colocar o computador para dormir.

O padrão é usar o driver de suspensão do kernel (escrevendo para /sys/power/state) e ambos suportam drivers de suspensão externos (como uswsusp, consulte aqui para obter detalhes sobre como conectá-lo ao systemd.)

Ambos suportam arquivos de configuração e scripts de gancho chamados no processo de suspensão ou retomada, a principal diferença é a localização dos arquivos (a API dos ganchos é muito semelhante):

  • pm-utilslê sua configuração dos arquivos /etc/pm/config.de executa ganchos dos diretórios /etc/pm/sleep.de /usr/lib/pm-utils/sleep.d.
  • systemd-suspendlê sua configuração do /etc/systemd/sleep.confarquivo (ou arquivos em um sleep.conf.ddiretório) e executa ganchos de /usr/lib/systemd/system-sleep/.

Então, desse ponto de vista, ambos parecem muito semelhantes ...

Mas o systemd vai mais além no suporte a suspensão / hibernação / resumo, pois:

  • Você pode conectar unidades systemd ao processo de suspensão / retomada, por exemplo, executando-as antes de suspender ou após a retomada. (Você pode encontrar ótimas receitas aqui .)
  • systemd suporta uma interface D-Bus, para que se possa acionar a suspensão usando uma chamada D-Bus em vez de executar um comando (embora a execução systemctl suspendainda seja uma opção). Disparar a suspensão pelo D-Bus em vez de executar um comando útil em um ambiente de desktop.
  • O systemd possui uma interface avançada para notificar e fazer com que os aplicativos do espaço do usuário atrasem a suspensão durante a conclusão das operações, a interface do inibidor , que é mais flexível e conveniente do que os scripts de gancho. (Na verdade, o systemd recomenda usar essa interface em vez de usar scripts sempre que possível.)

Portanto, mesmo que ambos pm-utilse systemd-suspendatinjam a suspensão real do sistema da mesma maneira, a integração com os outros componentes do sistema faz com que seja importante qual é chamado ... E nas distribuições que enviam systemd, systemctl suspendnormalmente é o certo para ligar.

filbranden
fonte
1
Esta é realmente uma ótima resposta que cobre todas as bases. Obrigado pelo fundo! Não vejo o Xubuntu usando o pm-suspend, então talvez nos dias pré-systemd eu o instalei e nunca o removi, e fui o único a usá-lo. O Debian faz um trabalho de merda dizendo quando há uma maneira mais nova de fazer alguma coisa.
Evan Carroll
1
+1. Systemctl teve algum papel nos problemas que encontrei aqui unix.stackexchange.com/questions/435168/… ?
Tim
1
Curiosamente, o Ubuntu 18.04 não foi pm-utilsinstalado por padrão e parece depender systemctl, mas /usr/lib/pm-utils/sleep.d/possui algumas coisas e /usr/lib/systemd/system-sleep/não existe. No entanto, eu vejo /lib/systemd/system-sleep/e vários outros abaixo /snap/, todos com um ou dois arquivos.
Izkata 19/01