Jak uruchomić skrypt podczas zawieszania / wznawiania? - Sony VAIO Ubuntu 12.04

12

Pytanie: Jak przypisać skrypt do uruchomienia po wybraniu opcji zawieszenia w menu zasilania?

Kontekst:
Mam laptopa Sony VAIO z kartą graficzną AMD Radeon. Chciałbym móc wyłączyć / włączyć dyskretną kartę graficzną. Nie mam z tym problemu, ale powoduje to problemy podczas zawieszania i wznawiania zawieszenia.

Kiedy sesja zostanie wznowiona z zawieszenia (z wyłączonym dyskretnym DPU), wentylator będzie się obracał w niekontrolowany sposób, chciałbym edytować skrypt zawieszenia lub przypisać nowy skrypt do opcji zawieszenia w menu zasilania. Dzięki temu mogę ponownie włączyć GPU przed zawieszeniem. Menu zasilania

EDYCJA: Po kilku badaniach sądzę, że ma to coś wspólnego z plikami w /etc/pm/sleep.d/?

Gdybym włożył niestandardowy skrypt, byłby on uruchamiany podczas zawieszania i wznawiania zawieszenia?

Jak rozróżnić w skrypcie zawieszanie / wznawianie?

danielcooperxyz
źródło

Odpowiedzi:

16

Masz rację. Musisz napisać skrypt i zapisać go /lib/systemd/system-sleep/(od 2015 r. Zajął się tym, zanim był /etc/pm/sleep.d/). Różnica między zawieszaniem a wznawianiem jest podana jako parametr skryptu:

#!/bin/bash

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

Jeśli chcesz to zrobić również dla hibernacji, argumentami byłyby hibernatei thaw.

André Stannek
źródło
Widziałem to w innych skryptach i zastanawiałem się nad szczegółowymi wymaganiami dla takiego skryptu. Dziękuję :)
danielcooperxyz
Cześć, próbowałem tego na moim komputerze Dell 5570 z systemem Ubuntu 14.04, aby włączyć touchpad, gdybym go wyłączył przed zawieszeniem. z jakiegoś powodu polecenie tp_id=( )xinput list | grep -i touchpad | awk '{ print $7 }' | sed 's/id=//'() nie zwraca identyfikatora, podczas gdy to polecenie działa z wiersza polecenia. Czy widzisz jakiś powód, dla którego by tego nie zrobił? Do innych celów skrypt działa świetnie. Dzięki!
Leo Simon
Przepraszam, w tym poprzednim komentarzu starałem się wprowadzić zwrotki do fragmentu skryptu, ale język minimarkdown mnie pokonał. () mają być zastąpione przez backtyki
Leo Simon
@LeoSimon Hej Leo, komentarze nie są odpowiednim miejscem do dyskusji na takie pytanie. Proponuję zadać zupełnie nowe pytanie. W ten sposób o wiele więcej osób to zobaczy i będzie mogło ci pomóc :-)
André Stannek
2
Może być konieczne użycie /lib/systemd/system-sleep/zamiast tego.
SimonT,