web-dev-qa-db-fra.com

PM-Suspendez vs SystemCl Suspendre?

Pour les distributions Linux utilisant SystemD, existe-t-il une différence pratique entre ces deux commandes?

  • systemctl suspend
  • pm-suspend

Que dois-je utiliser ou préférer?

9
Evan Carroll

En bref, vous devez généralement préférer le mode de suspension intégré par votre distribution. Pour la distribution que Système de navire, c'est typiquement systemctl suspend.

Par exemple, le Arch Linux Wiki dit :

systemD fournit des commandes natales pour la suspension, l'hibernate et une suspension hybride, voir "Gestion de l'alimentation avec SystemD" pour plus de détails. Il s'agit de l'interface par défaut utilisée en Arch Linux.

Et pour Debian Jessie :

Avec SystemD, pm-utils et ses crochets ne sont plus utilisés, il y a plutôt systemd-suspend.


La raison pour laquelle vous voulez coller avec ce que votre distribution utilise est que leurs paquets qui se soucient de suspendre/reprise expédieront des scripts de crochet qui s'intègrent à l'une des pm-utils (/usr/lib/pm-utils/sleep.d) ou systemd (/usr/lib/systemd/system-sleep/), vous devez donc utiliser la même interface pour que tous les crochets appropriés fonctionnent comme prévu.

En outre, les distributions vont généralement accrocher la méthode de suspension/hibernation appropriée dans ACPI pour des événements matériels, des environnements de bureau (pour les boutons d'arrêt qui permettent une suspension/hibernate) et avec des épargnants/serrures à écran, etc.


Les deux pm-suspend et systemd-suspend _ utilisent généralement les mêmes interfaces à en réalité Placez l'ordinateur pour dormir.

Par défaut à l'utilisation du pilote de suspension du noyau (en écrivant à /sys/power/state) et les deux supports de suspension externe (tels que uswsusp, voir ici Pour plus de détails sur Comment l'accrocher à SystemD.)

Ils soutiennent tous les deux des fichiers de configuration et des scripts de crochet appelés dans le processus de suspension ou de reprise, la principale différence étant l'emplacement des fichiers (l'API des crochets est très similaire):

  • pm-utils lit sa configuration à partir de fichiers dans /etc/pm/config.d et exécute des crochets des deux annuaires /etc/pm/sleep.d et /usr/lib/pm-utils/sleep.d répertoires.
  • systemd-suspend lit sa configuration à partir du fichier /etc/systemd/sleep.conf (ou des fichiers dans un répertoire sleep.conf.d) et exécute des crochets à partir de /usr/lib/systemd/system-sleep/.

Donc, à partir de ce point de vue, les deux ont l'air très similaire ...

Mais SystemD va plus loin dans son soutien pour suspendre/hibernation/CV, depuis:

  • Vous pouvez accrocher des unités SystemD dans le processus de suspension/de reprise, par exemple les exécuter avant de suspendre ou après la reprise. (Vous pouvez trouver d'excellentes recettes ici .)
  • systemD prend en charge une interface D-BUS, on peut donc déclencher la suspension en utilisant un appel D-bus plutôt que d'exécuter une commande (bien que fonctionnant systemctl suspend est toujours une option.) Déclencher la suspension de la D-Bus plutôt. que en exécutant une commande est généralement utile à partir d'un environnement de bureau.
  • systemD possède une interface avancée pour notifier et disposer d'applications d'espace d'utilisateur retardant la suspension pendant qu'ils complétent les opérations, l'interface inhibiteur , qui est plus flexible et pratique que les scripts de crochet. (En fait, SystemD recommande d'utiliser cette interface plutôt que des scripts de crochet chaque fois que possible.)

Donc même si les deux pm-utils _ et systemd-suspend obtiennent la suspension réelle du système dans de la même manière, l'intégration avec les autres composants du système le rend afin que cela compte lequel est important Appelé ... et sur les distributions d'expédition SystemD, puis systemctl suspend est typiquement la bonne à appeler.

14
filbranden