
Quando pressiono o botão liga / desliga, quero executar um script. Para fins deste cenário, diga file.sh. Então, quando pressiono o botão liga / desliga, quero executar o arquivo.sh e apenas o arquivo.sh.
A maioria das soluções que encontrei envolviam edição /etc/acpi/powerbtn.sh
, mas esse arquivo não existe no meu sistema. (Estou executando o Ubuntu 19.04) Tentei criá-lo e preenchê-lo com o conteúdo padrão, mas não funcionou. Também tentei ouvir o pressionamento de teclas com acpi_listen
, mas nada aconteceu quando pressionei as teclas, então não sei se fiz errado ou o quê. Tentei usar xev
, que captou eventos importantes, mas nada foi registrado quando apertei o botão liga / desliga.
Alguém sabe como fazer isso ou o que estou fazendo de errado?
PS: Devo mencionar que prefiro uma solução que possa ser feita na linha de comando, de preferência sem qualquer software de terceiros. Obrigado.
Pergunta semelhante, mas sem soluções:
https://askubuntu.com/questions/473693/run-a-script-when-power-button-is-pushed
Basicamente procurando o equivalente Linux do que eles fizeram aqui:
https://stackoverflow.com/questions/12434863/executing-a-batch-script-on-windows-shutdown
EDIT: isto é o que recebo do syslog:
Feb 9 13:01:01 joe-Aspire-E5-576G gnome-session-binary[1624]: Entering running state
E este é o meu arquivo em eventos:
event=button/power action=/home/ragnvaldr/Desktop/test/sc.sh
`
Responder1
Sua pergunta está respondida noEXEMPLOSeção de man acpid
. Vou me adaptar às suas necessidades.
- Como
root
criar um arquivo nomeado/etc/acpi/events/power
com conteúdo como este:
event=button/power
action=/usr/bin/logger "ACPI_POWER_BTTN_TEST: %e"
Então corra
service acpid restart
.Tail o
syslog
arquivo assim/usr/bin/tail -f /var/log/syslog
Pressione o botão liga/desliga para ver sua mensagem de teste no formato
syslog
.Altere a
action=
linha nopower
arquivo adequadamente para apontar para seu script personalizado.
Solução de problemas:
Após reiniciar
acpid
, verifique seacpid
está realmente em execução usando opidof acpid
comando.Seu script funciona conforme o esperado? Use nomes de caminhos completos para comandos em seu script. Fazernãoassuma qualquer valor para
PATH
.No exemplo acima usei o
/usr/bin/logger
comando como uma maneira fácil de registrar algo em algum lugar (/var/log/syslog
). Alternativamente, você pode escrever algo em um arquivo/tmp
para fins de teste.Foi relatado (por @nathan) que alguns gerenciadores de janelas também podem capturar o botão liga/desliga. Pode ajudar garantir que
/etc/systemd/logind.conf
haja linhaHandlePowerKey=ignore
, de modo quesystemd-logind.service
ignorará o botão liga / desliga.
Responder2
Basicamente procurando o equivalente Linux do que eles fizeram aqui:https://stackoverflow.com/questions/12434863/executing-a-batch-script-on-windows-shutdown
Se é isso que você deseja fazer, você pode executar scripts quando o sistema for desligado (ou hibernado ou colocado em suspensão) usando o comandosystemd
a infraestrutura.