Czy Systemd czyta / etc / pm /…?

14

Czy systemy używające systemdodczytu i wykonywania skryptów są w /etc/pm/sleep.d/?

Zaczynam dochodzić do wniosku, że systemdignoruje te skrypty. Jeśli to prawda, jaka jest wymiana?

Aktualizacja: man systemd-sleepskrypty stanów można dodawać do /lib/systemd/system-sleep/. Szczegóły były dla mnie niewystarczające, ale próbowałem zmodyfikować przykład Arch Arch i utworzyłem /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

Mam zamiar zrestartować menedżera sieci po wznowieniu, ponieważ czasami nie działa.

To chyba nie robi tego, co chcę.

Sean
źródło
Odkryłem, że skrypty /etc/pm/sleep.d będą nadal działać, jeśli wpiszesz sudo pm-suspendz cmdline. Po prostu systemd nie użyje go z przepływu pracy.
Tomofumi,

Odpowiedzi:

13

Skrypty w /etc/pm/config.d|power.d|sleep.dsą ignorowane w ramach systemd. Zamiast tego należy utworzyć i włączyć systemową „jednostkę” (usługę).

Aby ponownie uruchomić sieć po wznowieniu działania systemu ze stanu uśpienia, utworzyłem plik /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

Następnie aktywowałem usługę za pomocą sudo systemctl enable root-resume.service. Włączenie usługi tworzy symboliczne łącze do pliku w/etc/systemd/system/suspend.target.wants/

W przeciwieństwie do man systemd-sleepumieszczonych plików serwisowych /lib/systemd/system-sleep/są ignorowane.

Sean
źródło
Tak, właśnie z tego powodu skrypty „restartuj sieć po zawieszeniu” nie działały dla osób z systemem Ubuntu z systememd.
neo1691
Powinno to zostać utworzone jako /etc/systemd/system/root-resume.service. Nigdy nie należy modyfikować plików w katalogu / lib, ponieważ są one zarządzane przez menedżera pakietów, aby uniknąć cruftu i potencjalnych awarii podczas aktualizacji, nie wspominając o uproszczeniu tworzenia kopii zapasowych.
hackel
2

Nie, ani ci w /usr/lib/pm-utils/sleep.d. Ale uruchamia wszystkie skrypty (nie pliki serwisowe) /lib/systemd/system-sleep/z ustawionymi bitami wykonywalnymi.

Oto przykład wywołania pm-powersave, zmodyfikowanego z /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 USD to „post” przy wznowieniu, w przeciwnym razie „przed”. 2 USD w obu przypadkach zawiera albo „wstrzymaj”, „hibernuj”, albo „hybrydowy sen”.

Martin Thornton
źródło