pm-suspend vs systemctl menangguhkan?

10

Untuk distribusi Linux menggunakan systemd, adakah perbedaan praktis antara kedua perintah ini?

  • systemctl suspend
  • pm-suspend

Mana yang harus saya gunakan atau sukai?

Evan Carroll
sumber

Jawaban:

16

Singkatnya, Anda umumnya harus memilih mode penangguhan yang terintegrasi oleh distro Anda. Untuk distro yang mengirim systemd, itu biasanya systemctl suspend.

Misalnya, wiki Arch Linux mengatakan :

systemd menyediakan perintah asli untuk menangguhkan, hibernasi, dan penundaan sementara, lihat "Manajemen daya dengan systemd" untuk detailnya. Ini adalah antarmuka default yang digunakan di Arch Linux.

Dan untuk Debian Jessie :

Dengan systemd, pm-utilsdan kaitnya tidak digunakan lagi, malah ada systemd-suspend.


Alasan mengapa Anda ingin tetap menggunakan distro Anda adalah bahwa paket mereka yang peduli tentang menangguhkan / melanjutkan akan mengirimkan skrip kait yang terintegrasi dengan pm-utils( /usr/lib/pm-utils/sleep.d) atau systemd( /usr/lib/systemd/system-sleep/), jadi Anda harus menggunakan antarmuka yang sama untuk mendapatkan semua yang benar kait berjalan seperti yang diharapkan.

Selain itu, distro biasanya akan mengaitkan metode penangguhan / hibernasi yang tepat ke ACPI untuk acara perangkat keras, lingkungan desktop (untuk tombol penonaktifan yang memungkinkan penangguhan / hibernasi), dan dengan screen saver / kunci, dll.


Keduanya pm-suspenddan systemd-suspendbiasanya menggunakan antarmuka yang sama untuk benar - benar membuat komputer tidur.

Baik default untuk menggunakan driver penangguhan kernel (dengan menulis ke /sys/power/state) dan keduanya mendukung driver penangguhan eksternal (seperti uswsusp, lihat di sini untuk rincian tentang bagaimana menghubungkannya ke systemd.)

Keduanya mendukung file konfigurasi dan skrip kait yang dipanggil dalam proses menangguhkan atau melanjutkan, perbedaan utama adalah lokasi file (API kait sangat mirip):

  • pm-utilsmembaca konfigurasinya dari file di /etc/pm/config.ddan mengeksekusi hook dari keduanya /etc/pm/sleep.ddan /usr/lib/pm-utils/sleep.ddirektori.
  • systemd-suspendmembaca konfigurasinya dari /etc/systemd/sleep.conffile (atau file dalam sleep.conf.ddirektori) dan mengeksekusi kait dari /usr/lib/systemd/system-sleep/.

Jadi, dari sudut pandang itu, keduanya terlihat sangat mirip ...

Tetapi systemd melangkah lebih jauh ke dalam dukungannya untuk menangguhkan / hibernasi / melanjutkan, karena:

  • Anda dapat mengaitkan unit sistemd ke dalam proses penangguhan / melanjutkan, misalnya menjalankannya sebelum menangguhkan atau setelah melanjutkan. (Anda dapat menemukan resep hebat di sini .)
  • systemd mendukung antarmuka D-Bus, sehingga orang dapat memicu penangguhan dengan menggunakan panggilan D-Bus daripada menjalankan perintah (meskipun menjalankan systemctl suspendtentu saja merupakan pilihan.) Memicu penangguhan melalui D-Bus daripada menjalankan perintah biasanya berguna dari lingkungan desktop.
  • systemd memiliki antarmuka canggih untuk memberi tahu dan meminta aplikasi pengguna menunda penundaan sementara mereka menyelesaikan operasi, antarmuka penghambat , yang lebih fleksibel dan nyaman daripada skrip kait. (Bahkan, systemd merekomendasikan untuk menggunakan antarmuka ini daripada menghubungkan skrip bila memungkinkan.)

Jadi meskipun keduanya pm-utilsdan systemd-suspendmencapai penangguhan sebenarnya dari sistem dalam cara yang hampir sama, integrasi dengan komponen lain dari sistem membuatnya sehingga penting yang mana yang disebut ... Dan pada distribusi pengiriman systemd, maka systemctl suspendbiasanya adalah yang benar untuk menelepon.

filbranden
sumber
1
Ini adalah jawaban yang sangat bagus yang mencakup semua basis. Terima kasih untuk latar belakangnya! Saya tidak melihat Xubuntu menggunakan pm-suspend, jadi mungkin pada hari-hari pra-systemd saya menginstalnya dan tidak pernah menghapusnya, dan saya adalah satu-satunya yang menggunakannya. Debian benar-benar memberi tahu Anda ketika ada cara baru untuk melakukan sesuatu.
Evan Carroll
1
+1. Apakah systemctl berperan dalam masalah yang saya temui di sini unix.stackexchange.com/questions/435168/… ?
Tim
1
Menariknya, Ubuntu 18.04 tidak pm-utilsterinstal secara default dan tampaknya mengandalkan systemctl, tetapi /usr/lib/pm-utils/sleep.d/memiliki hal-hal di dalamnya dan /usr/lib/systemd/system-sleep/tidak ada. Namun, saya melihat /lib/systemd/system-sleep/dan beberapa lagi di bawah /snap/, yang semuanya memiliki satu atau dua file di dalamnya.
Izkata