Systemd lit-il / etc / pm /…?

14

Les systèmes utilisant des systemdscripts de lecture et d'exécution en /etc/pm/sleep.d/?

Je commence à conclure que la réponse est systemdqu'ignore ces scripts. Si c'est vrai, quel est le remplacement?

Mise à jour: les man systemd-sleepscripts d'états peuvent être ajoutés /lib/systemd/system-sleep/. Les détails étaient insuffisants pour moi mais j'ai essayé une modification d'un exemple de wiki Arch et créé /lib/systemd/system-sleep/root-resume.service.

[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=simple
ExecStart=/bin/systemctl restart network-manager.service

[Install]
WantedBy=suspend.target

Mon intention est de redémarrer le gestionnaire de réseau après la reprise, car parfois cela ne fonctionne pas.

Cela ne semble pas faire ce que je veux.

Sean
la source
J'ai trouvé que les scripts /etc/pm/sleep.d seront toujours exécutés si vous tapez à sudo pm-suspendpartir de cmdline. Juste systemd ne l'utilisera pas depuis son workflow.
Tomofumi

Réponses:

13

Les scripts dans /etc/pm/config.d|power.d|sleep.dsont ignorés sous systemd. Au lieu de cela, une "unité" systemd (service) doit être créée et activée.

Pour redémarrer la mise en réseau après la sortie du système du sommeil, j'ai créé le fichier /lib/systemd/system/root-resume.service:

[Unit]
Description=Local system resume actions
After=suspend.target

[Service]
Type=oneshot
ExecStart=/bin/systemctl restart network-manager.service

[Install]
WantedBy=suspend.target

Ensuite, j'ai activé le service avec sudo systemctl enable root-resume.service. L'activation du service crée un lien symbolique pour le fichier dans/etc/systemd/system/suspend.target.wants/

Contrairement aux man systemd-sleepservices, les fichiers placés /lib/systemd/system-sleep/sont ignorés.

Sean
la source
Oui, c'est exactement la raison pour laquelle les scripts "redémarrer le réseau après une suspension" ne fonctionnaient pas pour les personnes exécutant Ubuntu avec systemd.
neo1691
Cela devrait être créé en tant que /etc/systemd/system/root-resume.service. Vous ne devez jamais modifier les fichiers sous / lib car ils sont gérés par le gestionnaire de paquets, pour éviter les ruptures et les ruptures potentielles lors de la mise à niveau, sans parler de la simplification des sauvegardes.
hackel
2

Non, ni ceux qui sont dedans /usr/lib/pm-utils/sleep.d. Mais il exécute tous les scripts (pas les fichiers de service) /lib/systemd/system-sleep/avec des bits exécutables définis.

Voici un exemple pour appeler pm-powersave, modifié depuis /usr/lib/pm-utils/sleep.d/00powersave.

#!/bin/sh

# do not run pm-powersave on ARM during suspend; the 1.5 seconds that it takes
# to run it don't nearly compensate the potentially slightly slower suspend
# operation in low power mode
ARCH=`uname -m`

case $1 in
    pre)  [ "$ARCH" != "${ARCH#arm}" ] || pm-powersave false ;;          
    post) pm-powersave ;;
esac
exit 0

$ 1 est "post" sur CV, "pre" sinon. $ 2 dans les deux cas contient soit "suspendre", "hiberner" ou "hybride-sommeil".

Martin Thornton
la source