Exécuter un script sur le réveil? [dupliquer]

36

Existe-t-il un moyen d'exécuter un script lorsqu'un ordinateur "se réveille" (après avoir dormi)? Je sais que cela peut être fait au démarrage, évidemment, mais le problème dans ce cas-ci est que le rétro-éclairage de mon ordinateur portable semble se réinitialiser à chaque réveil du sommeil, et j'aime idéalement avoir un script pour le tourner à un niveau raisonnable au lieu de le taper manuellement à chaque fois.

    
posée Eva 06.12.2012 - 21:18
la source

4 réponses

29

pm-utils fournit un tas de scripts qui s'exécutent sur sleep / resume, vous pouvez y ajouter votre script, mais vous devrez faire attention, car le bousculement risque de casser. Regardez dans /usr/lib/pm-utils/sleep.d , où sont les scripts, vous pouvez regarder le script appelé 95led car il est assez simple et sera un bon modèle pour commencer.

95led fournit des cas d'hibernation / suspension et de dégel / reprise, si vous voulez seulement reprendre, vous écrivez votre script comme ceci:

#!/bin/sh

case "" in
    resume)
        echo "hey I just got resumed!"
        run_some_command
esac

Votre script devrait probablement s'exécuter en dernier, donc assurez-vous qu'il apparaît en dernier dans le répertoire, peut-être le nommer 99ZZZ_myscript ou quelque chose. Encore une fois, si vous n'êtes pas sûr de ce que vous faites ici, je ne vais pas jouer avec. Vous pouvez finir par interrompre la suspension / reprise. Si cela se produit, vous pouvez supprimer le script ou le corriger, mais vous devrez effectuer un cycle d’alimentation pour que votre système puisse être sauvegardé.

Il peut aussi être plus simple, mais je sais que cette méthode fonctionnera.

    
réponse donnée mfisch 06.12.2012 - 21:37
la source
31

Dans 15.04, Vivid, vous devez placer vos scripts dans:

/lib/systemd/system-sleep/

Un exemple de script basé sur un script du wiki Arch ( systemd sleep Crochets ):

#!/bin/sh
case / in
  pre/*)
    echo "Going to ..."
    # Place your pre suspend commands here, or 'exit 0' if no pre suspend action required
    ;;
  post/*)
    echo "Waking up from ..."
    # Place your post suspend (resume) commands here, or 'exit 0' if no post suspend action required
    ;;
esac

N'oubliez pas de rendre votre script exécutable!

sudo chmod a+x /lib/systemd/system-sleep/your-script

Voir man systemd-sleep pour plus de détails.

sudo n'est pas nécessaire car votre script sera exécuté en tant que root.

note: le lien wiki Arch sur le sujet ( crochets de veille systemd ) indique (à tort pour 15.04) que vous devez placer vos scripts dans /usr/lib/systemd/system-sleep/ , mais cela ne fonctionnera pas dans Ubuntu 15.04. Placez vos scripts dans /lib/systemd/system-sleep/ si vous exécutez 15.04.

    
réponse donnée SpmP 07.05.2015 - 01:00
la source
5

Ce n’est pas vraiment une réponse indépendante mais comme je suis incapable de commenter (à cause de la restriction de la réputation), je voudrais juste ajouter un complément important à la réponse de mfisch qui a aussi fonctionné pour moi.

Veuillez noter que les HOME et PATH (et peut-être d'autres variables d'environnement) ne seront probablement pas les mêmes que votre environnement shell standard. J'ai eu des problèmes avec la solution de mfisch ne semblant pas fonctionner pour les scripts à exécuter sur CV mais il s'est avéré que c'étaient mes scripts qui étaient en défaut car ils s'attendaient à ce que HOME soit placé dans mon répertoire utilisateur utilisateur sur mon système) et pour PATH à /usr/local/bin , et au point de reprise, aucun de ces éléments n'est garanti (et dans le cas de HOME , éventuellement déconseillé). Donc, vous devrez peut-être adapter vos scripts / programmes pour ne pas dépendre de ces env-vars ...

    
réponse donnée jamadagni 15.06.2014 - 18:36
la source
5

Comme je n'ai pas assez de réputation pour écrire des commentaires, je vais réécrire la solution de mfisch en ajoutant la réponse à Lindh-E:

SOLUTION

pm-utils fournit un tas de scripts qui fonctionnent sur sleep / resume.

Ce dont vous avez besoin est de:

  1. Créez un script appelé 99MyScript.sh (99 permet de l'exécuter après d'autres scripts)
  2. Ajoutez votre script dans /usr/lib/pm-utils/sleep.d
  3. Attribuez le droit d’exécution: sudo chmod + x /usr/lib/pm-utils/sleep.d/99MyScript.sh
  4. Testez-le:)

AVERTISSEMENT:

vous devrez faire attention car foirer va probablement casser le CV. Si le système tombe en panne ou se fige, vous pouvez supprimer le script ou le corriger, mais vous devrez effectuer un cycle d'alimentation rigoureux pour que votre système soit sauvegardé.

EXEMPLE:

Regardez le script existant dans /usr/lib/pm-utils/sleep.d. Le script appelé 95led est assez simple et sera un bon modèle pour commencer. 95led fournit des cas pour hibernate / suspend et thaw / resume, si vous voulez seulement reprendre, vous écrivez votre script comme ceci:

#!/bin/sh

case "" in
    resume)
        echo "hey I just got resumed!"
        run_some_command
esac
    
réponse donnée sangorys 21.12.2014 - 15:31
la source

Lire d'autres questions sur les étiquettes