Gibt es bei Linux-Distributionen mit systemd einen praktischen Unterschied zwischen diesen beiden Befehlen?
systemctl suspend
pm-suspend
Welches soll ich verwenden oder bevorzugen?
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-utils
und seine Hooks werden nicht mehr verwendet, stattdessen gibt essystemd-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-suspend
und systemd-suspend
verwenden 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 uswsusp
finden 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-utils
Liest seine Konfiguration aus Dateien in /etc/pm/config.d
und führt Hooks aus beiden /etc/pm/sleep.d
und /usr/lib/pm-utils/sleep.d
Verzeichnissen aus.systemd-suspend
liest seine Konfiguration aus der /etc/systemd/sleep.conf
Datei (oder Dateien in einem sleep.conf.d
Verzeichnis) 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:
systemctl suspend
natü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.Obwohl beide pm-utils
und systemd-suspend
die 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 suspend
normalerweise die Richtig, um anzurufen.
pm-utils
standardmäßig installiert und scheint sich darauf zu verlassensystemctl
, 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.