Executar script no Wakeup? [duplicado]

35

Existe uma maneira de executar um script quando um computador "acorda" (de dormir)? Eu sei que isso pode ser feito na inicialização, obviamente, mas o problema neste caso é que a luz de fundo do meu laptop parece redefinir toda vez que ele acorda do sono, e eu idealmente gostaria de ter um script para cuidar de transformá-lo até um nível razoável, em vez de ter que digitá-lo manualmente todas as vezes.

    
por Eva 06.12.2012 / 21:18

4 respostas

29

O pm-utils fornece vários scripts que são executados em sleep / resume, você pode adicionar o seu script lá, mas você precisa ter cuidado, já que estragar provavelmente interromperá o currículo. Olhe em /usr/lib/pm-utils/sleep.d , é aí que estão os scripts, você pode olhar para o script chamado 95led , pois é bastante simples e será um bom modelo para começar.

O 95led fornece casos para o hibernate / suspend e thaw / resume, se você quiser apenas currículo, você escreveria seu script assim:

#!/bin/sh

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

Seu script provavelmente deve ser executado por último, então certifique-se de que ele apareça por último no diretório, talvez nomeie-o como 99ZZZ_myscript ou algo assim. Novamente, se você não tem certeza do que está fazendo aqui, eu não vou mexer com isso. Você pode acabar quebrando suspender / retomar. Se isso acontecer, você poderá excluir o script ou corrigi-lo, mas terá que fazer um ciclo de energia rígido para recuperar o sistema.

Também pode haver uma maneira mais simples, mas sei que esse método funcionará.

    
por mfisch 06.12.2012 / 21:37
31

Em 15.04, Vivid, você precisa colocar seus scripts em:

/lib/systemd/system-sleep/

Um exemplo de script baseado em um do wiki do Arch ( systemd sleep Ganchos ):

#!/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ão se esqueça de tornar seu script executável!

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

Veja man systemd-sleep para mais detalhes.

Não há necessidade de sudo , pois seu script será executado como root.

nota: o link wiki do Arch sobre o assunto ( ganchos de sono systemd ) afirma (incorretamente para 15.04) que você deve colocar seus scripts em /usr/lib/systemd/system-sleep/ , mas isso não funcionará no Ubuntu 15.04. Coloque seus scripts em /lib/systemd/system-sleep/ se você estiver executando o 15.04.

    
por SpmP 07.05.2015 / 01:00
5

Esta não é realmente uma resposta independente separada, mas como não posso comentar (devido à restrição de reputação), gostaria apenas de acrescentar um suplemento importante à resposta do mfisch, que também funcionou para mim.

Por favor, note que HOME e PATH (e possivelmente outras variáveis ambientais) provavelmente não serão o mesmo que o seu ambiente normal de shell. Eu tive problemas com a solução do mfisch não parecendo funcionar para os scripts que eu precisava para executar em currículo, mas descobriu-se que era meus scripts em falta desde que eles estavam esperando HOME para ser definido para o meu diretório de usuário (eu sou um único usuário no meu sistema) e para PATH incluir /usr/local/bin , e no ponto de continuação, nada disso é garantido (e no caso de HOME , possivelmente desaconselhável). Então você pode ter que adaptar seus scripts / programas para não depender daqueles env-vars ...

    
por jamadagni 15.06.2014 / 18:36
4

Como eu não tenho reputação suficiente para escrever comentários, vou reescrever a solução do mfisch em adicionar a resposta para o Lindh-E:

SOLUÇÃO:

pm-utils fornece vários scripts que são executados em suspensão / reinicialização.

O que você precisa é:

  1. Crie um script chamado 99MyScript.sh (o 99 permite executá-lo depois de outros scripts)
  2. Adicione seu script em /usr/lib/pm-utils/sleep.d
  3. Atribuir execução correta: sudo chmod + x /usr/lib/pm-utils/sleep.d/99MyScript.sh
  4. Teste:)

AVISO:

você precisará ter cuidado, pois errar provavelmente interromperá o currículo. Se o sistema trava ou congela, você pode excluir o script ou corrigi-lo, mas você terá que fazer um ciclo de energia rígido para recuperar o sistema.

EXEMPLO:

Procure o scripti existente em /usr/lib/pm-utils/sleep.d. O script chamado 95led é bastante simples e será um bom modelo para começar. O 95led fornece casos de hibernação / suspensão e descongelamento / retomada, se você quiser apenas retomar, você escreveria seu script assim:

#!/bin/sh

case "" in
    resume)
        echo "hey I just got resumed!"
        run_some_command
esac
    
por sangorys 21.12.2014 / 15:31