¿Systemd lee / etc / pm / ...?

14

¿Los sistemas que usan systemdleen y ejecutan scripts /etc/pm/sleep.d/?

Estoy empezando a concluir que la respuesta es que systemdignora estos scripts. Si esto es cierto, ¿cuál es el reemplazo?

Actualización: man systemd-sleepse pueden agregar scripts de estados /lib/systemd/system-sleep/. Los detalles eran insuficientes para mí, pero intenté modificar un ejemplo de Arch wiki y los creé /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

Mi intención es reiniciar el administrador de red después de reanudarlo porque ocasionalmente no funciona.

Esto no parece estar haciendo lo que quiero.

Sean
fuente
Descubrí que los scripts /etc/pm/sleep.d aún se ejecutarán si escribe sudo pm-suspenddesde cmdline. Solo systemd no lo usará desde su flujo de trabajo.
Tomofumi

Respuestas:

13

Las secuencias de comandos en /etc/pm/config.d|power.d|sleep.dse ignoran en systemd. En cambio, se debe crear y habilitar una "unidad" (servicio) systemd.

Para reiniciar la red después de que el sistema se reanuda desde la suspensión, creé el archivo /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

Luego activé el servicio con sudo systemctl enable root-resume.service. Habilitar el servicio crea un enlace simbólico para el archivo en/etc/systemd/system/suspend.target.wants/

Contrariamente a man systemd-sleeplos archivos de servicio colocados /lib/systemd/system-sleep/se ignoran

Sean
fuente
Sí, exactamente esta fue la razón por la cual los scripts de "reiniciar la red después de una suspensión" no funcionaban para las personas que ejecutan ubuntu con systemd.
neo1691
Esto debe ser creado como /etc/systemd/system/root-resume.service. Nunca debe modificar los archivos en / lib, ya que son administrados por el administrador de paquetes, para evitar roturas y posibles roturas en la actualización, sin mencionar la simplificación de las copias de seguridad.
hackel
2

No, ni los de adentro /usr/lib/pm-utils/sleep.d. Pero ejecuta todos los scripts (no los archivos de servicio) /lib/systemd/system-sleep/con bits ejecutables establecidos.

Aquí hay un ejemplo para llamar a pm-powersave, modificado desde /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 es "publicar" en el currículum, "pre" de lo contrario. $ 2 en ambos casos contiene "suspensión", "hibernación" o "suspensión híbrida".

Martin Thornton
fuente