Les systèmes utilisant systemd
lisent-ils et exécutent-ils des scripts dans /etc/pm/sleep.d/
?
Je commence à conclure que la réponse est que systemd
ignore ces scripts. Si cela est vrai, quel est le remplacement?
Mise à jour: les états man systemd-sleep
peuvent être ajoutés à /lib/systemd/system-sleep/
. Les détails étaient insuffisants pour moi mais j'ai essayé une modification d'un exemple d'Arch wiki 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 Network-Manager après la reprise, car parfois il ne fonctionne pas.
Cela ne semble pas faire ce que je veux.
Les scripts dans /etc/pm/config.d|power.d|sleep.d
sont ignorés sous systemd. A la place, une "unité" systemd (service) doit être créée et activée.
Pour redémarrer la mise en réseau une fois que le système a quitté le mode veille, 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 à man systemd-sleep
, les fichiers de service placés dans /lib/systemd/system-sleep/
sont ignorés.
Non, ni ceux de /usr/lib/pm-utils/sleep.d
. Mais il exécute tous les scripts (pas les fichiers de service) dans /lib/systemd/system-sleep/
avec les bits exécutables définis.
En voici un exemple pour appeler pm-powersave, modifié à partir de /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 "suspend", "hibernate" ou "hybrid-sleep".