Liest Systemd / etc / pm /…?

14

Können Systeme, systemddie Skripte verwenden, lesen und ausführen /etc/pm/sleep.d/?

Ich komme zu dem Schluss, dass systemddiese Skripte ignoriert werden. Wenn dies zutrifft, wie lautet der Ersatz?

Update: man systemd-sleepStatusskripte können hinzugefügt werden /lib/systemd/system-sleep/. Die Details waren für mich unzureichend, aber ich habe versucht, ein Beispiel für ein Arch-Wiki zu ändern und es erstellt /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

Ich beabsichtige, den Netzwerkmanager nach der Wiederaufnahme neu zu starten, da er gelegentlich nicht funktioniert.

Dies scheint nicht das zu tun, was ich will.

Sean
quelle
Ich habe festgestellt, dass /etc/pm/sleep.d-Skripte weiterhin ausgeführt werden, wenn Sie sudo pm-suspendvon cmdline aus tippen. Nur systemd verwendet es nicht aus seinem Workflow.
Tomofumi

Antworten:

13

Skripte in /etc/pm/config.d|power.d|sleep.dwerden unter systemd ignoriert. Stattdessen muss eine systemd "Einheit" (Dienst) erstellt und aktiviert werden.

Um das Netzwerk neu zu starten, nachdem das System aus dem Ruhezustand wiederhergestellt wurde, habe ich die Datei erstellt /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

Dann habe ich den Dienst mit aktiviert sudo systemctl enable root-resume.service. Durch das Aktivieren des Dienstes wird eine symbolische Verknüpfung für die Datei in erstellt/etc/systemd/system/suspend.target.wants/

Im Gegensatz zu man systemd-sleepDienstdateien werden in /lib/systemd/system-sleep/ignoriert.

Sean
quelle
Ja, genau aus diesem Grund funktionierten die Skripte zum Neustarten des Netzwerks nach einem Suspend nicht für Benutzer, die Ubuntu mit systemd ausführen.
Neo1691
Dies sollte als erstellt werden /etc/systemd/system/root-resume.service. Sie sollten niemals Dateien unter / lib ändern, da diese vom Paketmanager verwaltet werden, um Überlastungen und mögliche Fehler beim Upgrade zu vermeiden, ganz zu schweigen von der Vereinfachung von Sicherungen.
Hackel
2

Nein, noch die in /usr/lib/pm-utils/sleep.d. Es werden jedoch alle Skripte (keine Servicedateien) /lib/systemd/system-sleep/mit festgelegten ausführbaren Bits ausgeführt.

Hier ist ein Beispiel für den Aufruf von pm-powersave, geändert von /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 ist "post" im Lebenslauf, "pre" sonst. $ 2 enthält in beiden Fällen entweder "Suspend", "Hibernate" oder "Hybrid-Sleep".

Martin Thornton
quelle