¿Cómo ejecutar un script al suspender / reanudar? - Sony VAIO Ubuntu 12.04

12

Pregunta: ¿Cómo asignar un script para que se ejecute al seleccionar la opción de suspensión en el menú de encendido?

Contexto:
Tengo una computadora portátil Sony VAIO con una tarjeta gráfica AMD Radeon. Me gustaría poder deshabilitar / habilitar la tarjeta gráfica discreta. No tengo ningún problema al hacer esto, pero causa problemas al suspender y reanudar la suspensión.

Cuando la sesión se reanuda desde la suspensión (con la DPU discreta deshabilitada), el ventilador gira sin control, lo que me gustaría hacer es editar la secuencia de comandos de suspensión o asignar una nueva secuencia de comandos a la opción de suspensión en el menú de encendido. Esto es para que pueda volver a habilitar la GPU antes de suspenderla. Menú de energía

EDITAR: ¿ Después de algunas investigaciones, creo que tiene algo que ver con los archivos /etc/pm/sleep.d/?

Si pongo un script personalizado allí, ¿se ejecutará al suspender y reanudar la suspensión?

¿Cómo puedo diferenciar en el script entre suspender / reanudar?

danielcooperxyz
fuente

Respuestas:

16

Tienes razón. Tienes que escribir un script y guardarlo en /lib/systemd/system-sleep/(desde 2015 systemd se encargó de eso, antes era /etc/pm/sleep.d/). La diferencia entre suspender y reanudar se da como un parámetro para el script:

#!/bin/bash

case "$1" in
    suspend)
        # executed on suspend
        ;;
    resume) 
        # executed on resume
        ;;
    *)
        ;;
esac

Si también quieres hacerlo para hibernar, los argumentos serían hibernatey thaw.

André Stannek
fuente
Había visto esto en otros scripts y me preguntaba sobre los requisitos específicos para tal script. Gracias :)
danielcooperxyz
Hola, probé esto en mi Dell 5570 con ubuntu 14.04 para activar mi touchpad, si lo hubiera apagado antes de suspenderlo. por alguna razón, el comando tp_id=( )xinput list | grep -i touchpad | awk '{ print $7 }' | sed 's/id=//'() no devuelve la identificación, mientras que este comando funciona desde la línea de comando. ¿Puedes ver alguna razón por la que no lo haría? Para otros fines, su script funciona muy bien. ¡Gracias!
Leo Simon
Lo siento, en ese comentario anterior, traté de poner backticks en el fragmento del script, pero el lenguaje minimarkdown me derrotó. los () están destinados a ser reemplazados por backticks
Leo Simon
@LeoSimon Hola Leo, los comentarios no son el lugar adecuado para discutir una pregunta de seguimiento. Le sugiero que haga una pregunta completamente nueva. De esta manera, mucha gente lo verá y podrá ayudarlo :-)
André Stannek
2
Es posible que deba usar /lib/systemd/system-sleep/en su lugar.
SimonT