pm-suspend vs systemctl suspend?


10

Per le distribuzioni Linux che usano systemd, c'è una differenza pratica tra questi due comandi?

  • systemctl suspend
  • pm-suspend

Quale dovrei usare o preferire?

Risposte:


16

In breve, dovresti generalmente preferire la modalità di sospensione integrata dalla tua distribuzione. Per le distribuzioni che spediscono systemd, questo è in genere systemctl suspend.

Ad esempio, il wiki di Arch Linux dice :

systemd fornisce comandi nativi per la sospensione, l'ibernazione e una sospensione ibrida, vedere "Gestione dell'alimentazione con systemd" per i dettagli. Questa è l'interfaccia predefinita utilizzata in Arch Linux.

E per Debian Jessie :

Con systemd pm-utilse i suoi hook non vengono più utilizzati, invece c'è systemd-suspend.


Il motivo per cui vuoi restare fedele a ciò che usa la tua distro è che i loro pacchetti che si preoccupano di sospendere / riprendere spediranno script hook che si integrano con pm-utils( /usr/lib/pm-utils/sleep.d) o systemd( /usr/lib/systemd/system-sleep/), quindi dovresti usare la stessa interfaccia per avere tutto il necessario i ganci funzionano come previsto.

Inoltre, le distro in genere agganciano il metodo di sospensione / ibernazione corretto in ACPI per eventi hardware, ambienti desktop (per pulsanti di spegnimento che consentono di sospendere / ibernare) e con salvaschermi / blocchi, ecc.


Sia pm-suspende systemd-suspendutilizzano in genere le stesse interfacce per davvero mettere il computer a dormire.

Entrambi utilizzano per impostazione predefinita il driver di sospensione del kernel (scrivendo su /sys/power/state) ed entrambi supportano driver di sospensione esterni (ad esempio uswsusp, vedere qui per i dettagli su come collegarlo a systemd.)

Entrambi supportano i file di configurazione e gli script hook chiamati nel processo di sospensione o ripresa, la differenza principale è la posizione dei file (l'API degli hook è molto simile):

  • pm-utilslegge la sua configurazione dai file /etc/pm/config.ded esegue hook da entrambe /etc/pm/sleep.de /usr/lib/pm-utils/sleep.ddirectory.
  • systemd-suspendlegge la sua configurazione dal /etc/systemd/sleep.conffile (o file in una sleep.conf.ddirectory) ed esegue hook da /usr/lib/systemd/system-sleep/.

Quindi, da quel punto di vista, entrambi sembrano molto simili ...

Ma systemd va oltre nel suo supporto per sospendere / ibernare / riprendere, poiché:

  • È possibile agganciare le unità systemd al processo di sospensione / ripresa, ad esempio eseguendole prima di sospenderle o dopo averle riprese. (Puoi trovare ottime ricette qui .)
  • systemd supporta un'interfaccia D-Bus, quindi è possibile innescare la sospensione utilizzando una chiamata D-Bus anziché eseguire un comando (anche se l'esecuzione systemctl suspendè ovviamente ancora un'opzione.) Trigger sospendere tramite D-Bus piuttosto che eseguendo un comando è in genere utile da un ambiente desktop.
  • systemd ha un'interfaccia avanzata per notificare e far ritardare la sospensione delle applicazioni dello spazio utenti mentre stanno completando le operazioni, l' interfaccia dell'inibitore , che è più flessibile e conveniente degli script hook. (In effetti, systemd consiglia di utilizzare questa interfaccia invece di hook script ogni volta che è possibile.)

Quindi, anche se entrambi pm-utilse systemd-suspendottenere l'effettiva sospensione del sistema all'incirca allo stesso modo, l'integrazione con gli altri componenti del sistema fa sì che sia importante ciò che viene chiamato ... E sulle distribuzioni che spediscono systemd, allora systemctl suspendè in genere il giusto quello da chiamare.


1
Questa è davvero un'ottima risposta che copre tutte le basi. Grazie per lo sfondo! Non vedo Xubuntu che usa pm-suspend, quindi forse nei giorni precedenti il ​​sistema l'ho installato e non l'ho mai rimosso, ed ero l'unico ad usarlo. Debian fa un vero lavoro di merda nel dirti quando c'è un modo più nuovo di fare qualcosa.
Evan Carroll,

1
+1. Systemctl ha avuto un ruolo nei problemi che ho riscontrato qui unix.stackexchange.com/questions/435168/… ?
Tim

1
È interessante notare che Ubuntu 18.04 non è pm-utilsinstallato di default e sembra fare affidamento systemctl, ma /usr/lib/pm-utils/sleep.d/ha delle cose dentro e /usr/lib/systemd/system-sleep/non esiste. Tuttavia, vedo /lib/systemd/system-sleep/e molti altri sotto /snap/, ognuno dei quali contiene uno o due file.
Izkata,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.