¿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.


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


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".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.