pm-suspend vs systemctl suspend?

9

Gibt es bei Linux-Distributionen mit systemd einen praktischen Unterschied zwischen diesen beiden Befehlen?

  • systemctl suspend
  • pm-suspend

Welches soll ich verwenden oder bevorzugen?

Evan Carroll
quelle

Antworten:

14

Kurz gesagt, Sie sollten im Allgemeinen den von Ihrer Distribution integrierten Suspend-Modus bevorzugen. Für Distributionen, die systemd versenden, ist dies normalerweise der Fall systemctl suspend.

Zum Beispiel sagt das Arch Linux-Wiki :

systemd bietet native Befehle für Suspend, Hibernate und Hybrid Suspend. Weitere Informationen finden Sie unter "Energieverwaltung mit systemd". Dies ist die Standardschnittstelle, die in Arch Linux verwendet wird.

Und für Debian Jessie :

Mit systemd, pm-utilsund seine Hooks werden nicht mehr verwendet, stattdessen gibt es systemd-suspend.


Der Grund, warum Sie bei dem bleiben möchten, was Ihre Distribution verwendet, ist, dass ihre Pakete, die sich um Suspend / Resume kümmern, Hook-Skripte liefern, die entweder in pm-utils( /usr/lib/pm-utils/sleep.d) oder systemd( /usr/lib/systemd/system-sleep/) integriert sind. Sie sollten also dieselbe Schnittstelle verwenden, um alle richtigen zu haben Haken laufen wie erwartet.

Darüber hinaus verbinden Distributionen in der Regel die richtige Suspend / Hibernate-Methode mit ACPI für Hardwareereignisse, Desktop-Umgebungen (für Schaltflächen zum Herunterfahren, die Suspend / Hibernate ermöglichen) und mit Bildschirmschonern / Sperren usw.


Beide pm-suspendund systemd-suspendverwenden normalerweise dieselben Schnittstellen, um den Computer tatsächlich in den Ruhezustand zu versetzen.

Sowohl Standard die Kernel zu verwenden suspendieren Treiber (schriftlich an /sys/power/state) und beide unterstützen externe suspendieren Treiber (wie uswsuspfinden Sie hier für Informationen, wie man es in systemd einzuhaken.)

Beide unterstützen Konfigurationsdateien und Hook-Skripte, die beim Anhalten oder Fortsetzen aufgerufen werden. Der Hauptunterschied besteht im Speicherort der Dateien (die API der Hooks ist sehr ähnlich):

  • pm-utilsLiest seine Konfiguration aus Dateien in /etc/pm/config.dund führt Hooks aus beiden /etc/pm/sleep.dund /usr/lib/pm-utils/sleep.dVerzeichnissen aus.
  • systemd-suspendliest seine Konfiguration aus der /etc/systemd/sleep.confDatei (oder Dateien in einem sleep.conf.dVerzeichnis) und führt Hooks aus /usr/lib/systemd/system-sleep/.

Aus dieser Sicht sehen beide sehr ähnlich aus ...

Aber systemd geht weiter in seine Unterstützung für Suspend / Hibernate / Resume, da:

  • Sie können systemd-Einheiten in den Suspend / Resume-Prozess einbinden, z. B. vor dem Suspendieren oder nach dem Fortsetzen. (Sie können tolle Rezepte finden Sie hier .)
  • systemd unterstützt eine D-Bus-Schnittstelle, so dass man Suspend auslösen kann, indem man einen D-Bus-Aufruf verwendet, anstatt einen Befehl auszuführen (obwohl das Ausführen systemctl suspendnatürlich immer noch eine Option ist). Das Auslösen von Suspend über D-Bus anstatt durch Ausführen eines Befehls ist normalerweise nützlich aus einer Desktop-Umgebung.
  • systemd verfügt über eine erweiterte Schnittstelle zum Benachrichtigen und Verzögern des Suspendierens von Userspace-Anwendungen während des Abschlusses von Vorgängen. Die Inhibitor-Oberfläche ist flexibler und praktischer als die Hook-Skripte. (Tatsächlich empfiehlt systemd, diese Schnittstelle anstelle von Hook-Skripten zu verwenden, wann immer dies möglich ist.)

Obwohl beide pm-utilsund systemd-suspenddie tatsächliche Unterbrechung des Systems auf ungefähr die gleiche Weise erreicht werden, macht es die Integration mit den anderen Komponenten des Systems so, dass es darauf ankommt, welche als ... bezeichnet wird. Und bei Distributionsversand-Systemen ist dies systemctl suspendnormalerweise die Richtig, um anzurufen.

filbranden
quelle
1
Dies ist eine wirklich gute Antwort, die alle Grundlagen abdeckt. Danke für den Hintergrund! Ich sehe Xubuntu nicht mit pm-suspend, also habe ich es vielleicht in den Tagen vor dem System installiert und nie entfernt, und ich war der einzige, der es verwendet hat. Debian sagt dir wirklich, wann es einen neueren Weg gibt, etwas zu tun.
Evan Carroll
1
+1. Hat systemctl eine Rolle bei den Problemen gespielt, auf die ich hier gestoßen bin ? Unix.stackexchange.com/questions/435168/… ?
Tim
1
Interessanterweise ist Ubuntu 18.04 nicht pm-utilsstandardmäßig installiert und scheint sich darauf zu verlassen systemctl, enthält jedoch /usr/lib/pm-utils/sleep.d/Dinge und /usr/lib/systemd/system-sleep/existiert nicht. Ich sehe jedoch /lib/systemd/system-sleep/und einige weitere unter /snap/, die alle eine oder zwei Dateien enthalten.
Izkata