Systemd legge / etc / pm / ...?


14

I sistemi che usano gli systemdscript di lettura ed esecuzione in /etc/pm/sleep.d/?

Sto iniziando a concludere che la risposta è che systemdignora questi script. Se questo è vero, qual è la sostituzione?

Aggiornamento: gli man systemd-sleepstati stati possono essere aggiunti a /lib/systemd/system-sleep/. I dettagli non erano sufficienti per me, ma ho provato a modificare un esempio di wiki di Arch e ho creato /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

La mia intenzione è quella di riavviare il gestore della rete dopo aver ripreso perché a volte non funziona.

Questo non sembra fare quello che voglio.


Ho scoperto che gli script /etc/pm/sleep.d verranno comunque eseguiti se si digita sudo pm-suspendda cmdline. Solo systemd non lo utilizzerà dal suo flusso di lavoro.
Tomofumi,

Risposte:


13

Gli script in /etc/pm/config.d|power.d|sleep.dvengono ignorati in systemd. Invece è necessario creare e abilitare una "unit" (servizio) di systemd.

Per riavviare la rete dopo che il sistema riprende dalla modalità di sospensione, ho creato il file /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

Quindi ho attivato il servizio con sudo systemctl enable root-resume.service. L'abilitazione del servizio crea un collegamento simbolico per il file in/etc/systemd/system/suspend.target.wants/

Contrariamente ai man systemd-sleepfile di servizio inseriti, /lib/systemd/system-sleep/vengono ignorati.


Sì, esattamente questo è stato il motivo per cui gli script "riavvia la rete dopo una sospensione" non funzionavano per le persone che eseguono Ubuntu con systemd.
neo1691,

Questo dovrebbe essere creato come /etc/systemd/system/root-resume.service. Non modificare mai i file in / lib poiché sono gestiti dal gestore dei pacchetti, per evitare la rottura e potenziali rotture durante l'aggiornamento, per non parlare della semplificazione dei backup.
hackel,

2

No, né quelli in /usr/lib/pm-utils/sleep.d. Ma esegue tutti gli script (non i file di servizio) /lib/systemd/system-sleep/con i bit eseguibili impostati.

Ecco un esempio per chiamare pm-powersave, modificato da /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 è "post" al curriculum, "pre" altrimenti. $ 2 in entrambi i casi contiene "suspend", "hibernate" o "hybrid-sleep".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.