Comment exécuter un script lors de la suspension / reprise? - Sony VAIO Ubuntu 12.04


12

Question: Comment attribuer un script à exécuter lors de la sélection de l'option de suspension dans le menu d'alimentation?

Contexte:
J'ai un ordinateur portable Sony VAIO avec une carte graphique AMD Radeon. Je voudrais pouvoir désactiver / activer la carte graphique discrète. Je n'ai aucun problème à le faire, mais cela pose des problèmes lors de la suspension et de la reprise de la suspension.

Lorsque la session reprend à partir de la suspension (avec le DPU discret désactivé), le ventilateur tourne de manière incontrôlable, ce que je voudrais faire est de modifier le script de suspension ou d'attribuer un nouveau script à l'option de suspension du menu d'alimentation. C'est pour que je puisse réactiver le GPU avant de suspendre. Menu d'alimentation

EDIT: Après quelques recherches, je pense que cela a quelque chose à voir avec les fichiers dans /etc/pm/sleep.d/?

Si j'y mettais un script personnalisé, serait-il exécuté lors de la suspension et de la reprise de la suspension?

Comment différencier dans le script la suspension / la reprise?

Réponses:


16

Tu as raison. Vous devez écrire un script et l'enregistrer /lib/systemd/system-sleep/(depuis 2015, systemd s'en occupe, avant /etc/pm/sleep.d/). La différence entre la suspension et la reprise est donnée en paramètre au script:

#!/bin/bash

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

Si vous souhaitez également le faire pour la mise en veille prolongée, les arguments seraient hibernateet thaw.


J'avais vu cela dans d'autres scripts et je me demandais sur les exigences spécifiques d'un tel script. Merci :)
danielcooperxyz

Salut, j'ai essayé cela sur mon Dell 5570 exécutant Ubuntu 14.04 pour qu'il allume mon pavé tactile, si je l'avais éteint avant de suspendre. pour une raison quelconque, la commande tp_id=( )xinput list | grep -i touchpad | awk '{ print $7 }' | sed 's/id=//'() ne renvoie pas l'ID, alors que cette commande fonctionne à partir de la ligne de commande. Pouvez-vous voir une raison pour laquelle cela ne serait pas? À d'autres fins, votre script fonctionne très bien. Merci!
Leo Simon

Désolé, dans ce commentaire précédent, j'ai essayé de mettre des backticks dans le fragment de script, mais le langage minimarkdown m'a battu. les () sont censés être remplacés par des backticks
Leo Simon

@ LeoSimon Hey Leo, les commentaires ne sont pas le bon endroit pour discuter d'une telle question de suivi. Je vous suggère de poser une question entièrement nouvelle. De cette façon, beaucoup plus de gens le verront et pourront vous aider :-)
André Stannek

2
Vous devrez peut-être utiliser à la /lib/systemd/system-sleep/place.
SimonT
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.